如何检查用户首次访问网站?

时间:2014-07-13 17:17:52

标签: c# asp.net-mvc asp.net-mvc-4 session forms-authentication

如何在会话过期后检查用户是否访问过我的网站?我在用户登录时设置了一些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的字典。

有什么想法吗?

谢谢!

1 个答案:

答案 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
        }
    }
}

请注意,即使以后不使用这种方法,这种方法也会重建会话中的值,但这在大多数网站中都不应成为问题。