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