我需要做的是以下
- 设置小型登录表单(或任何部分视图)
- 完成登录操作
- 返回到单击登录按钮之前用户所在的相同位置(控制器/操作)
任何 Partial Request/Subcontroller、RenderAction 解决方案都提供此功能而无需任何额外代码来处理父页面 url?
我需要做的是以下
任何 Partial Request/Subcontroller、RenderAction 解决方案都提供此功能而无需任何额外代码来处理父页面 url?
您可以尝试以下方法:
创建一个新用户 MVC 用户控件 (Login.ascx),您可以在其中设置登录表单:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<% using (Html.BeginForm("authenticate", "login")) { %>
<%= Html.Hidden("returnurl", Request.Url.ToString()) %>
<div>
<label for="username">Username</label>
<%= Html.TextBox("username") %>
</div>
<div>
<label for="password">Password</label>
<%= Html.TextBox("password") %>
</div>
<input type="submit" value="Login" />
<% } %>
在某些视图页面中包含此部分内容:
<% if (!User.Identity.IsAuthenticated) { %>
<% Html.RenderPartial("~/Views/Home/Login.ascx"); %>
<% } else { %>
Welcome <%= Html.Encode(User.Identity.Name) %>
<%} %>
在您的登录控制器中验证用户名和密码,如果身份验证成功重定向到 returnUrl:
public class LoginController : Controller
{
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Authenticate(string username, string password, string returnurl)
{
// TODO: Perform authentication, set cookies,
// verify that returnurl belongs to your site, etc...
return Redirect(returnurl);
}
}