问题描述
我正在ASP.NET MVC网站上工作,这是一个电子商务网站。我正在使用ASP.NET身份。
我添加了一项新功能来阻止用户创建垃圾邮件广告。我已向IsBlocked
表中添加了user
标志,并且如果设置了该标志,则该用户将无法再登录网站。
但是,如果用户已经登录并具有有效的会话/ cookie,则他们可以继续使用网站,直到他们注销或会话过期。当他们被阻止时,是否有可能使他们现有的会话(如果有)无效?
解决方法
来自here:
设置IsBlocked
时,也可以通过以下方式更新用户的SecurityStamp
:
await userManager.UpdateSecurityStampAsync(user);
因此,下一次根据cookie生成的主体验证用户的SecurityStamp时,验证将失败,并且用户将注销。
您可以控制通过以下方式验证安全戳的时间间隔的长度:
services.Configure<SecurityStampValidatorOptions>(options =>
{
options.ValidationInterval = TimeSpan.FromMinutes(30); // 30 minutes is default
});
请务必在AddIdentity
之后调用它。
您可以将ValidationInterval
设置为零,但这将导致验证,并因此导致用户对每个请求的数据库请求。