0

私がする必要があるのは次のとおりです

  1. 小さいログイン フォーム (または任意の部分ビュー) を設定する
  2. 完全なログイン アクション
  3. ログインボタンをクリックする前にユーザーがいたのと同じ場所(コントローラー/アクション)に戻ります

部分的なリクエスト/サブコントローラー、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 に答える