0

そのため、テンプレートを使用して MVC 4 で Web サイトの構築を開始しましたが、すべてうまくいきました。しかし、テンプレートにはすでに追加されている機能がたくさんあり、少しでも理解できなかったので、それらの機能のいくつかを適切に使用するのは難しいと感じました. そのような機能の 1 つがログイン システムです。

これで、手間をかけずに外部データベースをセットアップして対話することができましたが、テンプレートがユーザー名をどのように認識し、彼がログインしているかについて完全に途方に暮れていました.

だから私は同じ機能を再作成/セットアップしようとしていますが、それが実際にどのように機能するかを理解できるようにゼロからです。そうは言っても…迷った!

[AllowAnonymous]
 public ActionResult Login(LoginModel model)
 {
     try
     {
         var canLogin = Services.Login(model.Username, model.Password);
         var cas = Services.CheckAcountStatus(canLogin.Token);

         if (cas.Payload.Items.Exists(m => !m.IsSynchronized)) RedirectToAction("VerifyPin", "Account", cas.Payload);

         return RedirectToAction("Index", "MyPage");
     }
     catch (CustomException ase)
     {
          ModelState.AddModelError("", ErrorCodeToString(ase.Error));
     }

      return View(model);
 }

これは私がこれまでに持っているものです。

<authentication mode="Forms">
    <forms name="MyName" loginUrl="~/Account/Login" timeout="30" />
</authentication>

多くの例には、EFなどを使用してデータベースをセットアップするための説明がありますが、それは私の外部データベースと同等です。

ユーザーがログインしているかどうかを知るために、データベースは本当に必要ですか? それとも単なるクッキーですか?

これ以上、どこに行けばいいのかわからない。誰かが少なくとも私を良い方向に向けることができれば、私はそれを感謝します.

結局のところ、私の唯一の本当の目標は、ユーザーがログインしているページ間で通信するための簡単な方法を用意することです.

4

2 に答える 2

0

ASP.NET MVC 4 では、非常に柔軟で使いやすい SimpleMemberhsip という新しいメンバーシップ プロバイダーが導入されました。ASP.NET フォーム認証と互換性のあるセキュリティ フレームワークをゼロから構築しようとする代わりに、SimpleMembership をカスタマイズする方法を示す記事を次に示します。フォーム認証は、Cookie に依存して、ユーザーがページ間でログインしているかどうかを判断します。あなたのコード例には、Cookie を処理するものは何も表示されません。インターネット テンプレートによって生成された Login メソッドを見ると、メソッド WebSecurity.Login がユーザーの認証を処理するだけでなく、Cookie の生成も処理することがわかります。

于 2013-02-22T14:16:04.967 に答える
0
if (Request.IsAuthenticated)
        {
            // Lets us know if the Request is authenticated
        }

に対する簡単な答え: 「結局のところ、私の唯一の本当の目標は、ユーザーがログインしているページ間で通信するための簡単な方法を用意することです。」

web.config のフォーム認証の構成オプションについて読んだり、formsauthentication チケットの内部の仕組みを調べたりすることをお勧めします。MVC には、使用できる Authorize 属性もあります。

http://msdn.microsoft.com/en-us/library/system.web.mvc.authorizeattribute(v=vs.108).aspx

于 2013-02-22T11:47:17.620 に答える