MVC3:C#表单身份验证和会话状态

Arc*_*ian 4 c# asp.net-mvc session-state

我想知道在MVC中处理和实现会话超时的最佳方法.我已经设置了我的应用程序,以便在用户进行身份验证时可以处理"RememberMe".我还存储了一些变量Context.Session["myvar"];

我的会话过期时遇到问题,但我的身份验证cookie尚未过期.

我的第一个想法是检查关于行动请求的会话统计数据; 但这似乎是很多代码.是否有一个检查会话状态的好地方?处理会话超时的其他方法有哪些?我想在会话有timedout时将用户重定向到登录页面.或者如果用户仍然登录,则重新加载会话变量.

Dar*_*rov 11

是否有一个检查会话状态的好地方

当然,自定义Authorize属性看起来很棒:

public class MyAuthorizeAttribute : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        var authroized = base.AuthorizeCore(httpContext);
        if (!authroized)
        {
            // the user is not authenticated or the forms authentication
            // cookie has expired
            return false;
        }

        // Now check the session:
        var myvar = httpContext.Session["myvar"];
        if (myvar == null)
        {
            // the session has expired
            return false;
        }

        return true;
    }
}
Run Code Online (Sandbox Code Playgroud)