构建阻止用户功能:如何强制用户注销或终止其现有会话

问题描述

我正在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设置为零,但这将导致验证,并因此导致用户对每个请求的数据库请求。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...