ASP.NET MVC身份如果记住我是真的,请不要注销用户



我正在研究ASP.NET MVC项目中的登录功能。

我的应用程序中有两种情况:

  1. 如果记住我是错误的,并且没有互动15分钟,那么我应该注销用户。

  2. 如果记住我是真的,那么几分钟后我就不应该注销用户,然后在5小时后清除cookie。

我在互联网上进行了很多搜索,并修改了我的app.UseCookieAuthentication

它在15分钟之后会在会议上过期,无论我是否真的是真的?我究竟做错了什么?

app.UseCookieAuthentication(new CookieAuthenticationOptions
{
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
    LoginPath = new PathString("/Account/Login"),
    Provider = new CookieAuthenticationProvider
    {
      // Enables the application to validate the security stamp when the user logs in.
      // This is a security feature which is used when you change a password or add an external login to your account.  
      OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
        validateInterval: TimeSpan.FromMinutes(500),
        regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)
      )
    },
    SlidingExpiration = true,
    ExpireTimeSpan = TimeSpan.FromMinutes(15)
});

是由于这一行:

ExpireTimeSpan = TimeSpan.FromMinutes(15)

这意味着您的cookie将始终 15分钟后到期。

您需要检查用户提交登录表格的位置,如果他们选择了Remember me?,则将ExpireTimeSpan设置为5小时,否则将其设置为15分钟。

update

我不确定您的登录代码是什么样的,但是如果您想要不同的行为,具体取决于用户是否选择Remember me?,则需要类似的内容:

await HttpContext.SignInAsync(
    CookieAuthenticationDefaults.AuthenticationScheme,
    new ClaimsPrincipal(claimsIdentity),
    new AuthenticationProperties
    {
        IsPersistent = true,
        ExpiresUtc = DateTime.UtcNow.AddMinutes(20)
    });

更多详细信息和示例https://learn.microsoft.com/en-us/aspnet/core/core/security/authentication/cookie?tabs = aspnetcore2x

相关内容

  • 没有找到相关文章