更改安全邮票

时间:2019-07-01 15:29:28

标签: asp.net-core .net-core

更新用户密码后,我希望安全标记值每次发生时都更新。我相信这是我研究得出的安全标记的工作方式。

我将这段代码放在ApplicationUserManager.cs中,但这不起作用:

 private static string NewSecurityStamp()
 {
     return Guid.NewGuid().ToString();
 }

每次对用户帐户进行更新时,我需要在什么地方获取安全标记值以进行更改?

1 个答案:

答案 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。