16

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

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

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

aspnet_regsql によって追加されたテーブル

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

  • デフォルトのメンバーシップ プロバイダー (私が何も知らない)
  • ユニバーサル プロバイダー
  • シンプルメンバーシップ

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

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

どちらのオプションが私に適していますか? 素敵なチュートリアルをご存知でしたら、私にリンクしていただけませんか?

どんな助けでも本当に感謝します!前もって感謝します!

4

3 に答える 3

4

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

1) Scott Hanselman のリンクを見てください。

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

machineKey参考までに: web.config で明示的に定義してください。将来の頭痛の種を大幅に節約できます。

PS私はあなたに同意しました。読み終わったところPro ASP.NET MVC 4 by Adam Freemanです。彼はメンバーシップ プロバイダーについては言及しませんでした。ASP.NET MVC 4 and the Web API by Jamie Kurtz読みたい場合は、従来のメンバーシップ プロバイダーを使用します。

于 2013-03-27T17:03:24.287 に答える
1

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

回答: SimpleMembershipProvider

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

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

于 2013-08-20T19:48:40.027 に答える
1

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

于 2014-08-19T10:22:36.057 に答える