1 回答

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個(gè)贊
遲到的回復(fù),但對(duì)于遇到此問(wèn)題的人:
我們通過(guò)添加一個(gè)驗(yàn)證指紋的自定義屬性來(lái)處理這個(gè)問(wèn)題。我們將該屬性用于登錄后的任何頁(yè)面。
以下是如何實(shí)現(xiàn)這一目標(biāo)的粗略示例。
指紋在登錄時(shí)創(chuàng)建并添加到緩存中:
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) });
}
該屬性然后查找此指紋并相應(yīng)地執(zhí)行操作:
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
}
我不確定這是否是最好的方法和最安全的方法,但它確實(shí)會(huì)阻止在注銷后保存和重新使用 cookie。
- 1 回答
- 0 關(guān)注
- 121 瀏覽
添加回答
舉報(bào)