更新用户密码后,我希望安全标记值每次发生时都更新。我相信这是我研究得出的安全标记的工作方式。
我将这段代码放在ApplicationUserManager.cs
中,但这不起作用:
private static string NewSecurityStamp()
{
return Guid.NewGuid().ToString();
}
每次对用户帐户进行更新时,我需要在什么地方获取安全标记值以进行更改?
答案 0 :(得分:0)
就是这样。但是,仅在一定间隔(默认情况下,每30分钟)上重新验证安全戳,以减少进行数据库查询的次数。您可以将此时间间隔降低,甚至降低到零,从而有效地使每个请求都重新验证该戳记。但是,这会增加往返数据库的震颤。
services.Configure<SecurityStampValidatorOptions>(o =>
{
// WARNING: this will issue a query for every request
// You might want to rather just compromise with an interval
// less than 30 minutes (5 minutes, 10 minutes, etc.)
o.ValidationInterval = TimeSpan.Zero;
});
另一种选择是在进行此类更改后简单地注销用户。如果目标只是让他们重新登录,那应该会更好。只需注入SignInManager<TUser>
,然后在该实例上调用SignOutAsync
。之后,您需要重定向用户。这可以直接进入登录页面或网站的受保护区域,然后将其带到登录页面进行身份验证。无论哪种情况,都必须进行重定向才能真正删除auth cookie。