0

MVC4 プロジェクトに正常にログインした後、別のページにリダイレクトしようとすると問題が発生します。別のログオン ページにリダイレクトするのではなく、メイン ページにログオン ユーザー名とパスワードのテキスト ボックスを表示するように、MVC4 テンプレートを変更しました。ログインに成功したら

正常にログインした後、別のページにリダイレクトしたいのですが、選択した方法によっては 2 つの問題があります。

  1. 問題 1: メイン ページのヘッダーの一部として、マイ ページ、つまりデータを含むグリッドを含むページが表示されます。

  2. 問題 2: データを含むグリッドを含むページを処理しますが、griddata モデルではなくログオン モデルを予期しているため、モデルが無効であるというエラーがスローされます。

どちらも明らかに間違った動作をしています。ログインに成功したら、メイン ページの右上にユーザー名を表示したいので、ログオン モデルを使用する必要がありますが、メイン セクションに他のページのグリッドを表示する必要があるため、 griddata モデルですが、これを行う方法がよくわかりません。

ありがとう。

4

1 に答える 1

0

これは複数の部分からなる回答ですが、実行する必要があるのは次のとおりです。

  1. ログインページに、ログインコントローラを指すフォームを用意します
  2. アカウントコントローラーで、ログインアクションを処理します
  3. レイアウトページでは、このように現在ログインしているユーザーを参照できます

例は次のとおりです。

1)ログインページ

@using(Html.BeginForm("Logon", "Account")) {
    @Html.TextBox("username")
    @Html.Password("password")
}

2)ログイン/アカウントコントローラー

public class AccountController : Controller {
    public ActionResult Logon(string username, string password) {
          // login logic here

          // save the username
          Session["Username"] = username;

          // Or you can reference user the user identity
          Session["Username"] = User.Identity.Name;

          // Redirect somewhere when you're done
          return Redirect("LoggedInPage", "Home");
    }
}

3)_Layoutヘッダー内

@if(HttpContext.User.Identity.IsAuthenticated) {
   @Session["Username"]
   // or
   @HttpContext.User.Identity.Name
} else {
   <div>You should log in!</div>
}
于 2012-12-15T15:49:29.307 に答える