Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 更改保安印章_Asp.net Core_.net Core - Fatal编程技术网

Asp.net core 更改保安印章

Asp.net core 更改保安印章,asp.net-core,.net-core,Asp.net Core,.net Core,当用户的密码被更新时,我希望安全戳值在每次更新时都被更新。从我的研究中,我相信这就是安全戳的工作原理 我将此代码放在ApplicationUserManager.cs中,但这不起作用: private static string NewSecurityStamp() { return Guid.NewGuid().ToString(); } 每次对用户帐户进行更新时,我需要在何处获取要更改的安全戳记值?就是这样。但是,仅每隔一段时间(默认情况下,每30分钟)重新验证安全戳,以减

当用户的密码被更新时,我希望安全戳值在每次更新时都被更新。从我的研究中,我相信这就是安全戳的工作原理

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

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

每次对用户帐户进行更新时,我需要在何处获取要更改的安全戳记值?

就是这样。但是,仅每隔一段时间(默认情况下,每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;
});
services.Configure(o=>
{
//警告:这将对每个请求发出查询
//你可能更愿意用一段时间来折衷一下
//少于30分钟(5分钟、10分钟等)
o、 ValidationInterval=TimeSpan.Zero;
});

另一种选择是,在进行此类更改后,只需将用户注销即可。如果目标仅仅是让他们重新登录,那就应该做得更好。只需插入
SignInManager
,然后在该实例上调用
SignOutAsync
。之后需要重定向用户。这可以直接发送到登录页面,也可以发送到受保护的站点的某个区域,这将导致他们被带到登录页面进行身份验证。在任何一种情况下,都需要重定向才能真正删除身份验证cookie。

就是这样。但是,仅每隔一段时间(默认情况下,每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;
});
services.Configure(o=>
{
//警告:这将对每个请求发出查询
//你可能更愿意用一段时间来折衷一下
//少于30分钟(5分钟、10分钟等)
o、 ValidationInterval=TimeSpan.Zero;
});

另一种选择是,在进行此类更改后,只需将用户注销即可。如果目标仅仅是让他们重新登录,那就应该做得更好。只需插入
SignInManager
,然后在该实例上调用
SignOutAsync
。之后需要重定向用户。这可以直接发送到登录页面,也可以发送到受保护的站点的某个区域,这将导致他们被带到登录页面进行身份验证。在任何一种情况下,都需要重定向,才能真正删除身份验证cookie。

嗨,克里斯。这个问题在解决方案中的作用是什么?用户管理器?启动?对不起。这将进入
Startup.ConfigureServices
。我认为
服务
变量会传达这一点,但我应该更明确一些。我认为这不起作用。它仍然没有更新数据库中的字段。我更改了一个用户的密码,该用户的安全戳仍然为空。嗨,克里斯。这个问题在解决方案中的作用是什么?用户管理器?启动?对不起。这将进入
Startup.ConfigureServices
。我认为
服务
变量会传达这一点,但我应该更明确一些。我认为这不起作用。它仍然没有更新数据库中的字段。我更改了一个用户的密码,该用户的安全戳仍然为空。你说的“但这不起作用”是什么意思。它以何种方式不起作用?数据库中的安全戳没有更改。是否刷新了数据库?是否使用asp.net核心脚手架标识?然后它在
AspNetUser
表中有一个
SecurityStamp
列。我进行了测试,它工作得很好,因为安全戳是一个随机值,每当用户凭据更改(密码更改、登录名删除)时都必须更改。您所说的“但这不起作用”是什么意思。它以何种方式不起作用?数据库中的安全戳没有更改。是否刷新了数据库?是否使用asp.net核心脚手架标识?然后它在
AspNetUser
表中有一个
SecurityStamp
列。我进行了测试,它工作得很好,因为安全戳是一个随机值,每当用户凭据更改(密码更改,登录名删除)时,它都必须更改