web-dev-qa-db-ja.com

ASP.net MVC 4のユーザーと役割の管理( "Membership.Provider"プロパティは "ExtendedMembershipProvider"のインスタンスである必要があります。)

私は何かを機能させるために2日間試しましたが、今のところそれは無意味です。ユーザーとその役割を管理することだけが必要です。

私が試したのは、MVCでそれを行う方法を理解することですが、それを行う方法に関する詳細なチュートリアルをインターネット上またはMVC 4の本で見つけることができません。

Aspnet_regsqlユーティリティでaspnetデータベースを有効にすることから始めました。これにより、次のテーブルが作成されます。

Tables added by aspnet_regsql

これはチュートリアルで見つけたすべてです。これらのテーブル(デフォルトのメンバーシッププロバイダーを使用していると想定しています)と対話する方法は示していません。

  • デフォルトのメンバーシッププロバイダー(私は何も知りません)
  • ユニバーサルプロバイダー
  • SimpleMembership

私はこのチュートリアルを見つけました:

http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-7

ここでは、インターネットアプリケーションテンプレートを使用して新しいMVC 4アプリケーションプロジェクトを作成し、アカウント制御に関連するすべてのファイルをコピーするように求めています。

私は自分のプロジェクトでそれを行いましたが、ログインしようとするとすぐに次のようになります:

このメソッドを呼び出すには、「Membership.Provider」プロパティが「ExtendedMembershipProvider」のインスタンスである必要があります。

これはこのフォーラムによれば: http://social.msdn.Microsoft.com/Forums/en-US/windowsazuredevelopment/thread/d352bb1b-577c-42b7-8872-5ed59cd65f32/

これは、次のように定義されているweb.configファイルでプロファイル、メンバーシップ、およびroleManagerプロバイダーを定義した方法が原因です。

<profile>
  <providers>
    <clear />
    <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="DatabaseConnection" applicationName="/" />
  </providers>
</profile>
<membership>
  <providers>
    <clear />
    <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="DatabaseConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
  </providers>
</membership>
<roleManager enabled="true">
  <providers>
    <clear />
    <add connectionStringName="DatabaseConnection" applicationName="/" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" />
    <add applicationName="/" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" />
  </providers>
</roleManager>

新しいユーザーを追加し、ロールを割り当て、ビューにアクセスするロールに応じてさまざまなコンテンツを表示できるようにするだけです。

質問#1インターネットアプリケーションテンプレートを使用してMVC 4アプリケーションを作成するときに使用されるメンバーシッププロバイダーは何ですか?

質問#2

Web.configファイルの何が問題になっていますか?プロバイダーを正しく定義するにはどうすればよいですか?

質問3

どのオプションが私に適していますか?あなたがそれのための素晴らしいチュートリアルを知っているなら、私をそれにリンクしていただけませんか?

どんな助けでも本当に感謝します!よろしくお願いします!

16
oskar132

使用しているメンバーシッププロバイダーには日付が付いています。新しい niversal Membership Provider は、プレフィックスaspnet_なしの新しいテーブル名を使用します。

1)Scott Hanselmanのリンクをご覧ください。

2)使用しない場合、profileは必要ありません。 roleManager構成が正しくありません。

参考:machineKeyをweb.configで明示的に定義してください。それは将来あなたに多くの頭痛を救います。

追伸私はあなたに同意しました。 Pro ASP.NET MVC 4 by Adam Freemanを読み終えました。メンバーシッププロバイダーについては触れていません。読みたい場合は、ASP.NET MVC 4 and the Web API by Jamie Kurtzは従来のメンバーシッププロバイダーを使用します。

4
Win

質問1インターネットアプリケーションテンプレートを使用してMVC 4アプリケーションを作成するときに使用されるメンバーシッププロバイダーは何ですか?

回答:SimpleMembershipProvider

質問2 web.configファイルの何が問題になっていますか?プロバイダーを正しく定義するにはどうすればよいですか?

回答:SimpleMembershipProviderの場合、web.configファイルを変更する必要はありません。詳細な構成/セットアップ情報とチュートリアルについては、こちらをご覧ください: http://aaron-hoffman.blogspot.com/2013/02/aspnet-mvc-4-membership-users-passwords.html

1
Aaron Hoffman

メンバーシップとセキュリティは、ASP.Netでは非常に複雑で、ASP.NET MVCでは依然として非常に複雑です。しかし、幸い、組み込みのメンバーシップをまったく使用しないことも可能です。シンプルなソリューションを作成し、多くのプロジェクトで使用して、githubに追加しました。参照 http://github.com/TesserisPro/ASP.NET-SImple-Security-Provider 簡単にカスタマイズできますそれ。

1
Dmitry