1 回答

TA贡献1786条经验 获得超13个赞
迟到的回复,但对于遇到此问题的人:
我们通过添加一个验证指纹的自定义属性来处理这个问题。我们将该属性用于登录后的任何页面。
以下是如何实现这一目标的粗略示例。
指纹在登录时创建并添加到缓存中:
private void OwinSignIn(tblUser user)
{
var thumbPrint = Guid.NewGuid();
var claims = new List<Claim>
{
....
new Claim(ClaimTypes.Thumbprint, thumbPrint.ToString())
};
MemoryCache.Default.Set(thumbPrint.ToString(), true, new CacheItemPolicy() { AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(60) });
}
该属性然后查找此指纹并相应地执行操作:
public class ValidateThumbprint : FilterAttribute, IAuthorizationFilter
{
public void OnAuthorization(AuthorizationContext filterContext)
var identity = (ClaimsIdentity)filterContext.HttpContext.User.Identity;
var thumbPrint = identity.Claims?.Where(s => s.Type == ClaimTypes.Thumbprint).First().Value;
if (thumbPrint != null)
{
if (MemoryCache.Default.Contains(thumbPrint))
{
return;
}
}
// handle invalid thumbprint
}
我不确定这是否是最好的方法和最安全的方法,但它确实会阻止在注销后保存和重新使用 cookie。
- 1 回答
- 0 关注
- 132 浏览
添加回答
举报