ASP.NET MVC 4记住了我的行为

时间:2013-01-05 17:02:23

标签: asp.net-mvc

我在登录页面上有记住我选项。有人可以解释一下这个过程吗?即每次用户导航到页面时都要经历登录过程?或者用户是否经常登录,应用程序仅在用户注销时再次检查凭据?我问的原因是我在DB中的用户表上有IsEnabled属性,并且想要禁用用户。但是,除非用户注销并重新登录,否则此属性似乎没有任何区别。 有任何想法吗? 感谢。

2 个答案:

答案 0 :(得分:3)

当用户首次使用有效凭据登录时,会创建一个cookie并存储在客户端。随着对网站的每个后续请求,cookie被传递到服务器并经过验证以确保它没有过期且有效。如果您希望能够检查IsEnabled是否应允许用户访问该站点,则需要在Global.asax文件的Application_AuthenticateRequest事件中创建自己的authenticatin逻辑。

protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
    // Your authentication logic
}

您可以在此处查看可以挂钩的完整事件列表:http://www.dotnetcurry.com/ShowArticle.aspx?ID=126

答案 1 :(得分:0)

我使用过这种变体 将此属性添加到控制器

public class IsLocked : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        if (!httpContext.Request.IsAuthenticated)
            return false;

        var session = DependencyResolver.Current.GetService<ISession>();

        var userDb = session.Query<Admin>().SingleOrDefault(x => x.Email == httpContext.User.Identity.Name);

        if (userDb == null)
            return false;

        return userDb.Status == null || userDb.Status.Value == false;
    }
}