ASP.NET身份设置持续的cookie在特定时间之后到期



我已经写了以下代码,以刷新用户角色在我的网站上订阅后,如以下内容:

private void RefreshUserRoles()
{
    var AuthenticationManager = HttpContext.GetOwinContext().Authentication;
    var Identity = new ClaimsIdentity(User.Identity);
    Identity.RemoveClaim(Identity.FindFirst(ClaimTypes.Role));
    Identity.AddClaim(new Claim(ClaimTypes.Role, "Subscriber"));
    AuthenticationManager.AuthenticationResponseGrant = new AuthenticationResponseGrant(
        new ClaimsPrincipal(Identity), 
        new AuthenticationProperties { IsPersistent = true}
    );
}

请注意以下代码:

AuthenticationManager.AuthenticationResponseGrant = new AuthenticationResponseGrant(
    new ClaimsPrincipal(Identity), 
    new AuthenticationProperties { IsPersistent = true}
    );

用户回到我的网站后,我将cookie设置为持久,但我忘了为此cookie设置有效期。我应该将此cookie持续30分钟,然后应要求用户重新录制系统。

由于某些用户从未在网站上重新录制,因此这使我遇到了问题,现在我需要在访问网站时将所有用户cookie重置在他们的浏览器中,并在取消订阅时更改角色。我注意到一些用户取消了他们的订阅,但从未重新汇编,但是他们仍然能够在我的网站上使用功能...

所以我的问题是:

  1. 如何将cookie的到期设置为30分钟,然后要求用户将用户重新运行到系统上。

  2. 如果很长一段时间没有过期,如何设置来检查cookie,以便我可以将其cookie重置为普通用户,如果他们取消了订阅?

这是我正在谈论的configureauth方法:

public void ConfigureAuth(IAppBuilder app)
{
    app.CreatePerOwinContext(ApplicationDbContext.Create);
    app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
    app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);
    app.UseCookieAuthentication(new CookieAuthenticationOptions
    {
        AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
        LoginPath = new PathString("/Controller/Action"),
        Provider = new CookieAuthenticationProvider
        {
            OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
            validateInterval: TimeSpan.FromMinutes(30),
            regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
        }
    });            
    app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
    app.UseTwoFactorSignInCookie(DefaultAuthenticationTypes.TwoFactorCookie, TimeSpan.FromMinutes(5));
    app.UseTwoFactorRememberBrowserCookie(DefaultAuthenticationTypes.TwoFactorRememberBrowserCookie);
}

这就是我设定的方式,它对我有用。

相关内容

  • 没有找到相关文章

最新更新