在asp.net mvc中验证用户后,FormsAuthentication不重定向

时间:2014-04-15 11:08:42

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

我正在使用表单Auhtentication in MVC4,我的问题是用户在身份验证后不会从登录页面重定向。

以下是我的登录操作:

[HttpPost]
public ActionResult Login(LoginModel model, string returnUrl)
{
   if (ModelState.IsValid)
   {
      if (Membership.ValidateUser(model.UserName, model.Password))
      {
         FormsAuthentication.SetAuthCookie(model.UserName,model.RememberMe);
         RedirectToDefault(returnUrl,model.UserName);
      }
      else
      {
         this.ShowMessage(MessageType.Danger, "Invalid username or password.");
      }
   }

   this.ShowMessage(MessageType.Danger, "Invalid username or password.");
   return View(model);
}

和我的Web.Config:

<authentication mode="Forms">
   <forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>

此代码:

FormsAuthentication.SetAuthCookie(model.UserName,model.RememberMe);
RedirectToDefault(returnUrl, model.UserName);

已执行,但代码仍然是最后一个Return View(模型);

请提供任何帮助。

2 个答案:

答案 0 :(得分:1)

这些是我对你的问题的假设。

您的Login在项目中是部分视图还是部分视图?

  1. 确保您的Login视图不是部分在表格帖子中查看。
  2. 确保您的Login视图没有Syntax Error in HTML/Code Errors
  3. 确保您的观点正确包含在项目的解决方案中。
  4. 您是否在Action Result
  5. 中传递了正确的模型
  6. 您是否有代码在视图中指定LoginModel
  7. 识别问题的解决方案:

    识别问题只需在Global.asax

    中添加
    protected void Application_Error(object sender, EventArgs e)
    {// Keep Debugger Here
         Exception exception = Server.GetLastError(); 
         Response.Clear(); // Just check the exception variable hint in Quick Watch
    }
    

答案 1 :(得分:0)

事实证明我在主页上调用了PartialView。我有PatialView结果的控制器用[授权]属性进行了装饰。

我所做的就是用[AllowAnonymous]装饰了Partiview结果,解决了这个问题。