我在我的网络应用程序中使用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);
}