如何在会话过期后检查用户是否访问过我的网站?我在用户登录时设置了一些Session值,但我刚刚发现了一种与解决方案混淆的行为。我在记录用户时设置了这些值。
但刚刚发生的事情是我昨天登录(社交登录)并关闭了浏览器。今天当我再次访问该网站时,我已经登录但我的会话已经完成,因为我没有这些值了。
所以我的问题是:MVC4在哪里检查用户是否登录?我可以将事件处理程序附加到该操作吗?或者像我在Global.asax中那样添加一些过滤器?或者有更好的解决方法吗?是否有更好的方法来添加会话值,然后是我正在做的或建议的?
我在这里阅读Where/how to populate session with user stored in cookie data in MVC app on first load?,session_start将是一个开始的地方,虽然我不想使用getter实例化方法,因为我只使用Session的字典。
有什么想法吗?
谢谢!
答案 0 :(得分:2)
登录状态存储在cookie中。我通常从Global.asax中的cookie和rebui,ld会话中获取数据:
protected void Application_AuthenticateRequest(object sender, EventArgs e)
{
if (HttpContext.Current.User != null)
{
if (HttpContext.Current.User.Identity.IsAuthenticated)
{
//take HttpContext.Current.User.Identity.Name here
//and rebuild values in Session if session is empty
}
}
}
请注意,即使以后不使用这种方法,这种方法也会重建会话中的值,但这在大多数网站中都不应成为问题。