C# 构建块用户功能:如何强制用户注销或终止其现有会话
我在一个ASP.NETMVC网站上工作,这是一个电子商务网站。我正在使用ASP.NET标识 我添加了一个新功能,在用户创建垃圾邮件广告时阻止他们。我在C# 构建块用户功能:如何强制用户注销或终止其现有会话,c#,asp.net-mvc,asp.net-mvc-5,asp.net-identity,C#,Asp.net Mvc,Asp.net Mvc 5,Asp.net Identity,我在一个ASP.NETMVC网站上工作,这是一个电子商务网站。我正在使用ASP.NET标识 我添加了一个新功能,在用户创建垃圾邮件广告时阻止他们。我在user表中添加了一个IsBlocked标志,如果设置了该标志,该用户将无法再登录网站 但是,如果用户已经登录并拥有有效的会话/cookie,则他们可以继续使用该网站,直到注销或会话过期。当它们被阻止时,是否可以使其现有会话(如果有)无效?来自: 设置IsBlocked时,还可以通过以下方式更新用户的SecurityStamp: await use
user
表中添加了一个IsBlocked
标志,如果设置了该标志,该用户将无法再登录网站
但是,如果用户已经登录并拥有有效的会话/cookie,则他们可以继续使用该网站,直到注销或会话过期。当它们被阻止时,是否可以使其现有会话(如果有)无效?来自:
设置IsBlocked
时,还可以通过以下方式更新用户的SecurityStamp
:
await userManager.UpdateSecurityStampAsync(user);
因此,下次根据cookie产生的主体验证用户的SecurityStamp时,验证将失败,用户将被注销
您可以通过以下方式控制验证安全戳的间隔长度:
services.Configure<SecurityStampValidatorOptions>(options =>
{
options.ValidationInterval = TimeSpan.FromMinutes(30); // 30 minutes is default
});
services.Configure(选项=>
{
options.ValidationInterval=TimeSpan.FromMinutes(30);//默认为30分钟
});
请务必在添加后调用它
您可以将
ValidationInterval
设置为零,但这将导致对用户发出的每个请求进行验证,并最终导致数据库请求。非常感谢,我明天会尝试这种方法