Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何验证未经批准的用户asp.net MVC 3_Asp.net_Asp.net Mvc 3_Asp.net Membership - Fatal编程技术网

如何验证未经批准的用户asp.net MVC 3

如何验证未经批准的用户asp.net MVC 3,asp.net,asp.net-mvc-3,asp.net-membership,Asp.net,Asp.net Mvc 3,Asp.net Membership,在用户获得批准之前,我无法对其进行验证。代码如下: 公共无效登录(LoginViewModel模型) { if (Membership.ValidateUser(model.UserName, model.Password)) { if (Membership.GetUser(model.UserName).IsApproved) { FormsAuthentication.SetA

在用户获得批准之前,我无法对其进行验证。代码如下:

公共无效登录(LoginViewModel模型) {

        if (Membership.ValidateUser(model.UserName, model.Password))
        {
            if (Membership.GetUser(model.UserName).IsApproved)
            {

                FormsAuthentication.SetAuthCookie(model.UserName, model.KeepMeLoggedIn);
            }
            else
            {
                throw new Exception("Your email is not verified yet. Please check your email!");
            }
        }
        else
        {
            throw new Exception("Username or Password doesn't match");
        }
    }
问题是,即使用户名和密码正确,但用户尚未获得批准,它也会抛出第二个异常

我试图覆盖ValidateUser,但我不能调用它

有什么建议吗

编辑:控制器代码

[AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Login(LoginViewModel model)
    {
        AccountService service = new AccountService();
        if (ModelState.IsValid)
        {
            try
            {
                service.Login(model);
                return RedirectToAction("Index", "Home");
            }
            catch (Exception e)
            {
                TempData["errorMessage"] = e.Message;
                return RedirectToAction("Index", "Home");
            }
        }
        return RedirectToAction("Index", "Home");
    }
我提到登录是一个局部视图

我试图覆盖ValidateUser,但我不能调用它

调用
Membership.ValidateUser
时,将查找在web.config中注册的成员资格提供程序。因此,如果已配置自定义提供程序,则它将调用自定义ValidateUser方法:

<membership defaultProvider="MyProvider">
    <providers>
        <add name="MyProvider" type="MvcApplication1.MyValidation, MvcApplication1" />
    </providers>
</membership>


此外,您不应该在这些情况下抛出异常,因为这些不是异常情况。使用异常仅处理异常情况。您应该将错误添加到ModelState。此外,控制器操作应返回
操作结果
而不是
无效
。请查看
帐户的
登录
操作控制器
在启动新的MVC应用程序时默认为您创建。

我不认为:抛出新异常(“您的电子邮件尚未验证。请检查您的电子邮件!”);是一个异常情况。所有此类异常都是我的控制器中的临时数据,我会显示一条错误消息。如果您有其他建议…那不是控制器。这是我在控制器中调用的服务类中的一个传统方法。此方法应返回true或false,或者如果您需要处理其他情况,则某些枚举然后将错误添加到控制器内的ModelState中。在这种情况下,我关于ActionResult返回类型的评论当然不成立。
<membership defaultProvider="MyProvider">
    <providers>
        <add name="MyProvider" type="MvcApplication1.MyValidation, MvcApplication1" />
    </providers>
</membership>