2012-02-09 61 views
1

其实我抄系统的一个MVC 3从一个项目,但现在它看起来像我奋力有这个重定向问题MVC登录表单不是重定向

// POST:/帐号/ LogOn支持

[HttpPost] 
    public ActionResult LogOn(LogOnModel model, string returnUrl) 
    { 
     if (ModelState.IsValid) 
     { 
      if (Membership.ValidateUser(model.UserName, model.Password)) 
      { 
       FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe); 
       if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/") 
        && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\")) 
       { 
        **return Redirect(returnUrl);** 
       } 
       else 
       { 
        return RedirectToAction("Index", "Home"); 
       } 
      } 
      else 
      { 
       ModelState.AddModelError("", "The user name or password provided is incorrect."); 
      } 
     } 

     // If we got this far, something failed, redisplay form 
     return View(model); 
    } 

所以当我使用xxx.com/admin需要我到登录页面,并按照上面的代码,但成功的用户名和密码后,它应该重定向到管理主页,它不是。 任何人都可以有任何想法,这将有助于我继续。

干杯

+0

它在哪里重定向你? – 2012-02-09 06:24:42

+0

'returnUrl'参数是否有值? – Peter 2012-02-09 08:03:45

回答

0

使用这样

[HttpPost] 
public ActionResult LogOn(LogOnModel model, string returnUrl) 
{ 
    if (ModelState.IsValid) 
    { 
    if (Membership.ValidateUser(model.UserName, model.Password)) 
    { 
     FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe); 

     if (Url.IsLocalUrl(returnUrl)) 
     { 
     return Redirect(returnUrl); 
     } 
     else 
     { 
     return RedirectToAction("Index", "Home"); 
     } 
    } 
    else 
    { 
     ModelState.AddModelError("", 
          "The user name or password provided is incorrect."); 
    } 
    } 
    // If we got this far, something failed, redisplay form 

    return View(model); 
} 
0

我碰到这个问题,所有的时间。您需要将returnUrl传递给表单作为隐藏输入,以便在您的登录POST中传回。

public ActionResult LogOn(returnUrl) { 
    return View(returnUrl); 
} 

[HttpPost] 
public ActionResult LogOn(LogOnModel input) { 
    return Redirect(input.ReturnUrl); 
} 

的问题是,你看到的RETURNURL在浏览器地址栏,但如果你看看你的表单操作它可能只是去“/登录”。

您的其他选择是将Url带到表单上的日志操作。

希望有所帮助。