ASP.NET MVC 5 OWIN Cookie过期

时间:2017-12-12 09:54:16

标签: asp.net cookies asp.net-mvc-5 owin

我在我的网络应用程序中使用OWIN中间件来管理登录/声明和发布cookie。最初的要求是用户应该在浏览器关闭时自动注销。这很容易,并通过设置AuthenticationProperties.IsPersistent = false来完成。

新的要求是,用户不仅应该在浏览器关闭时自动注销,而且还应该在一小时不活动后超时。我在ConfigureAuth课程中更新了Startup方法,以提供ExpireTimeSpan并设置SlidingExpiration = true。为了使这些更改有效,我然后设置AuthenticationProperties.IsPersistent = true

这些更改使用户在一小时后超时,但现在,由于cookie是持久性的,因此用户不再在浏览器关闭时自动注销。无论如何都要获得这两种功能吗?我想要我的蛋糕,也吃它!

用于参考的代码:

public partial class Startup
{
    public void ConfigureAuth(IAppBuilder app)
    {
        app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
            ExpireTimeSpan = TimeSpan.FromHours(1),
            SlidingExpiration = true,
            LoginPath = new PathString("/Consent/Index"),
            ReturnUrlParameter = "returnUrl"
        });
    }
}

private void UpdateClaims(User user)
    {
        var claims = new List<Claim>();

        claims.Add(new Claim(BlahBlahBlah));
        claims.Add(new Claim(MoreBlahBlah));

        var identity = new ClaimsIdentity(claims, DefaultAuthenticationTypes.ApplicationCookie, ClaimTypes.Name, ClaimTypes.Role);

        Authentication.SignIn(new AuthenticationProperties
        {
            IsPersistent = true
        }, identity);
    }

0 个答案:

没有答案