Asp.net Core 2.0 Identity.TwoFactorRememberMe expiry



我一直在寻找,但我找不到更改 Identity.TwoFactorRememberMe cookie 到期日期的方法,当您调用 signInManager 时设置该 cookie.TwoFactorSignInAsync 方法并将"记住客户端"参数设置为 true。

此方法效果很好,但默认值为 14 天,不幸的是不适合客户。他们希望 cookie 更持久,这样他们的客户就不会那么频繁地填写 2FA。

我正在使用asp .net core 2.1 - 到目前为止,我遇到的任何答案看起来都是旧版本的标识。

谢谢

要为双因素 cookie 设置自定义过期时间,似乎有两种不同的方法:

选项 1:在services.AddAuthentication()调用后将以下内容放入启动中:

services.Configure<CookieAuthenticationOptions>
(IdentityConstants.TwoFactorRememberMeScheme, options =>
{
//this will override the default 14 day expire time
options.ExpireTimeSpan = TimeSpan.FromDays(30);
});

虽然您还应该考虑重命名cookie以隐藏信息 - 快速的谷歌搜索将通过查看默认的cookie名称来显示您正在使用 asp.net 身份。可以使用 Cookie.Name 属性同时更改:

services.Configure<CookieAuthenticationOptions>
(IdentityConstants.TwoFactorRememberMeScheme, o =>
{
//this will override the default cookie name for information hiding
o.Cookie.Name = "app.2fa.rememberme";
//this will override the default 14 day expire time to 30 days
o.ExpireTimeSpan = TimeSpan.FromDays(30);
});

选项 2:如果您将 AddIdentityCookies(( 调用与 AddAuthentication(( 调用一起使用,则可以更改名称和过期时间:

services.AddAuthentication().AddIdentityCookies(o =>
{
o.TwoFactorRememberMeCookie.Configure(a => a.Cookie.Name = "app.2fa.rememberme");
}); 

请注意,如果您还使用身份服务器,则选项 2 将不起作用,因为它在 UseIdentityServer(( 调用期间调用此选项。

作为参考,我通过查看身份测试来了解如何执行此操作:https://github.com/aspnet/Identity/blob/c7276ce2f76312ddd7fccad6e399da96b9f6fae1/test/Identity.Test/IdentityOptionsTest.cs#L77。这在我能找到的任何地方都没有记录,我努力最终弄清楚这一点。希望这有助于下一个来寻找如何做到这一点的人。

在信息隐藏主题上 - 您可能还需要考虑重命名成功登录后代码验证期间使用的 TwoFactorUserId cookie。这可以以相同的方式完成,除了 IdentityConstant 略有不同:

services.Configure<CookieAuthenticationOptions>
(IdentityConstants.TwoFactorUserIdScheme, options =>
{
options.Cookie.Name = "app.2fa.userid";
});
services.AddAuthentication().AddIdentityCookies(o =>
{
o.TwoFactorUserIdCookie.Configure(a => a.Cookie.Name = "app.2fa.userid");
}); 

相关内容

  • 没有找到相关文章

最新更新