2

MVC 4 で新しいサイトを構築しています。誰かがログインを許可されているかどうかを確認する際には、少し変わった要件がいくつかあるため、この場合、ユーザー名、パスワード、および有効化の単純な確認では不十分です (ロールも確認されます)。

まず、従来のカスタム メンバーシップ プロバイダー クラスとロール プロバイダーを作成しました。MVC4は私がこれをするのが好きではありませんでした:

This method cannot be called during the application's pre-start initialization phase.

私が理解しているように、これは単純なメンバーシップ プロバイダーと oauth によるものです (この分野についてはよくわかりません)。回避策は次のようです。

<add key="enableSimpleMembership" value="false"/>
<add key="autoFormsAuthentication" value="false"/>

メンバーシップ プロバイダーを引き続き行う必要があるのでしょうか。私のデータベースはローカルにあり、ユーザーがログインできるかどうか、およびどのロールとアクセス許可を持っているかを決定するためのすべてのロジックを備えたサービス レイヤーがあります。oauth / シンプル メンバーシップ / 他の方法を検討する必要がありますか、それとも上記のようにシンプル メンバーシップをオフにする必要がありますか?

appsetting でオフにした場合、後の段階で oauth を統合することもできます (これは私が非常に広く考えているだけで、現時点ではこの要件はありません)。複数の認証メカニズムを使用することは可能ですか?

それとも、これと同じくらい簡単ですか ,(accountController):

    public ActionResult Login()
    {
        if(logiclayer.CheckAccess("username", "password"))
        {
              var persistCookie = false;
              FormsAuthentication.SetAuthCookie("userName", persistCookie);
        }
        return View();
    }

それで、彼らのクッキーが設定され、コントローラーは[Authorize]属性を使用できますか? これは、ロール プロバイダーがセットアップされていない場合にエラーがスローされるため、考慮[Authorize(Roles = "admin")]されません。これは、これをどのように行うべきかについての元の質問に戻ります。

4

1 に答える 1

1

ここでこれについて議論があります asp.net 4.5 カスタム メンバーシップ プロバイダーの構成は 、問題を解決するように見える奇妙な例外をスローしますが、ベスト プラクティスとしては、まだメンバーシップ プロバイダーを使用することだと思いますがenableSimpleMembership = false、custommembership の構成で設定します

于 2012-12-06T10:31:36.920 に答える