2012-02-09 96 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帶到表單上的日誌操作。

希望有所幫助。