在經典的asp.net/mvc身份驗證示例中,LogOn操作獲取LogOnViewModel和returnUrl字符串以執行身份驗證並重定向到以前的Url。asp.net mvc身份驗證操作無法獲得returnUrl
[HttpPost]
public ActionResult LogOn(LogOnViewModel model, string returnUrl)
{
if (ModelState.IsValid)
if (!FormsAuthentication.Authenticate(model.UserName, model.Password))
ModelState.AddModelError("", "Incorrect user name or password.");
if (ModelState.IsValid)
{
FormsAuthentication.SetAuthCookie(model.UserName, false);
return Redirect(returnUrl ?? "Bookings");
}
else
return View();
}
但是,當通過操作處理請求時,returnUrl參數爲null,但是應該像作者說的那樣有一個值。有誰能解釋一下嗎?
形式從中我發送的請求是這樣的:查看/管理/ LogOn.aspx
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<div id="login">
<% Html.EnableClientValidation(); %>
<% using (Html.BeginForm("LogOn", "Admin")) { %>
<%= Html.ValidationSummary(true) %>
<div><label>Username:</label><input name="userName" type="text" /></div>
<div><label>Password:</label><input name="password" type="password" /></div>
<div><input type="submit" value="Login" /></div>
<% } %>
</div>
</asp:Content>
有窗體上不產生隱藏字段。
認證:
<authentication mode="Forms">
<forms loginUrl="~/Admin/LogOn" timeout="2880">
<credentials passwordFormat="SHA1">
<user name="admin" password="hashedPassword"/>
</credentials>
</forms>
</authentication>
您的提交表單是什麼樣的?如果你用'POST'請求提交,你有''returnUrl'參數的隱藏元素嗎? – 2010-11-10 19:43:05