2

看起来下面的代码在ASP.NET身份中不再起作用了吗? 这是正确的吗?Session.SessionTimeout在ASP.NET标识中被弃用

的Global.asax

protected void Session_Start(object sender, EventArgs e) 
{ 
    Session.Timeout = 5; // It has no impact to Session 
} 

而这个代码仅定义会话超时。

STARTUP.AUTH.CS

public void ConfigureAuth(IAppBuilder app) 
{    
    var sessionTimeout = 20; // 

    app.UseCookieAuthentication(new CookieAuthenticationOptions 
    { 
     ExpireTimeSpan = TimeSpan.FromMinutes(sessionTimeout), 
     AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
     LoginPath = new PathString("/Account/Login"), 
     CookieName = ".MyApp1_Authentication", 
     SlidingExpiration = true 
    }); 
} 
+1

你不混合会话超时和cookie到期时间? – trailmax 2014-10-20 14:50:31

+0

@trailmax可能......我认为他们必须平等,对吧? – 2014-10-20 15:22:43

+2

很大程度上取决于您想要实现的目标。 Cookie超时是cookie在浏览器中的存储时间,身份验证到期取决于此。会话寿命是指与当前访问相关的用户数据存储在服务器上的时间。会话超时和cookie到期时间范围相同是有意义的,但他们不必这样做。那么你想要做什么? – trailmax 2014-10-20 15:49:36

回答

5

ExpireTimeSpan曲奇定义身份验证cookie的寿命的长短。

app.UseCookieAuthentication(new CookieAuthenticationOptions 
{ 
    ExpireTimeSpan = TimeSpan.FromSeconds(30), 
    // other stuff 
});    

这将使验证Cookie在30秒内无效。但它不会为用户重新加载页面,它只会在下一个请求中将用户重定向到登录页面。

如果您需要在cookie过期时自动重新加载页面,您需要在浏览器中使用一些JavaScript来检测会话何时即将过期。

不是一个真正的答案,因为你已经有了你的问题。只是一个扩展的评论 - )