在默认的asp.net登录系统中添加自定义规则

时间:2017-06-22 17:04:26

标签: asp.net asp.net-mvc asp.net-identity

大家好我正在开展一个项目,我们可以禁用我们的用户。用户表中有一个列名称状态,可以是true或false。现在我想在默认的asp.net用户登录中添加一个新规则,如果用户被禁用(他的列名称状态等于false),则无法使用“管理员已禁用您的帐户”的错误消息登录# 34。

我已经查看了,

ManageController.cs
IdentityConfig.cs
ManageViewModles.cs
IdentityModel.cs

但我没有得到任何线索。如何在我的asp.net MVC-5应用程序中添加此规则

2 个答案:

答案 0 :(得分:0)

您可以在登录视图控制器中使用异步功能定义验证,然后在登录按钮上调用它。

开始的好地方:here

修改

这里有一些您可以在HomeController-> Index Action中使用的代码示例。请注意,这不是异步,但您可以使用db调用实现异步操作:

    [HttpGet]
    public ActionResult Index()
    {
        //Verification of user

        //if true
        return View();

       //else false
       return ErrorView(); //View that contains the error message
    }

答案 1 :(得分:0)

在帐户控制器的登录方法中,我使用此代码实现了它。

我更新了SignInStatus.Success案例的开关(结果)中的代码:

案例SignInStatus.Success:

            var userID = SignInManager.AuthenticationManager.AuthenticationResponseGrant.Identity.GetUserId();
            AspNetUser res = db.AspNetUsers.Where(x => x.Id == userID).Select(x => x).FirstOrDefault();
            if (res.Status == "False")
            {
                AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie);
                // return RedirectToAction("Index", "Home");
                ModelState.AddModelError("", "Admin has disabled your account.");
                return View(model);
            }
//remaining code here