0

我需要做的是以下

  1. 设置小型登录表单(或任何部分视图)
  2. 完成登录操作
  3. 返回到单击登录按钮之前用户所在的相同位置(控制器/操作)

任何 Partial Request/Subcontroller、RenderAction 解决方案都提供此功能而无需任何额外代码来处理父页面 url?

4

1 回答 1

0

您可以尝试以下方法:

  1. 创建一个新用户 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" />
    <% } %>
    
  2. 在某些视图页面中包含此部分内容:

    <% if (!User.Identity.IsAuthenticated) { %>
        <% Html.RenderPartial("~/Views/Home/Login.ascx"); %>
    <% } else { %>
        Welcome <%= Html.Encode(User.Identity.Name) %>
    <%} %>
    
  3. 在您的登录控制器中验证用户名和密码,如果身份验证成功重定向到 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);
        }
    }
    
于 2009-11-23T20:09:22.180 回答