2

ASP.net MVC4 テンプレートの組み込みの SimpleMembership を使用しており、管理パネルを作成してパスワードをリセットし、ユーザー ベースで同様の操作を行いたいと考えています。

SecurityGuard.MVC4 ナゲットを出発点として使用しており、ほとんどのアクションで NotSupportedException を取得しています。SecurityGuard はコントローラーの Membership プロパティを使用して、SimpleMembershipProvider で GetAllUsers()、GetUser()、ResetPassword() などのメソッドを呼び出し、それらはすべて NotSupportedException をスローします。ドキュメントから、これは設計によるものと思われます。

SimpleMembershipProvider.GetAllUsers

注: SimpleMembershipProvider クラスが WebSecurity.InitializeDatabaseConnection() メソッドへの呼び出しを使用して初期化されている場合、このメソッドはサポートされておらず、NotSupportedException 例外がスローされます。ただし、WebSecurity.InitializeDatabaseConnection() メソッドが呼び出されておらず、標準の ASP.NET メンバーシップ プロバイダーを使用するようにサイトを構成している場合、このメソッドは標準のメンバーシップ プロバイダーに渡されます。

私は何が欠けていますか?WebSecurity.CreateUser() のような標準的なものに WebSecurity を使用するか、プロバイダーを直接使用するかを選択する必要があるようです。

私はこれを回避できますが、なぜ両方を取得できないのかについて主に混乱していますか?

4

1 に答える 1

6

SimpleMembership意図的に設計されています..まあ、シンプルです。 WebSecurityを使用しSimpleMembership、から派生したExtendedMembershipProviderクラスを使用します。SimpleMembership

基本的に、SimpleMembership は WebSecurity に存在しない機能を実装しておらず、GetAllUsers はその 1 つです。はい、これは仕様です。

いくつかのオプションがあります。それらはすべて回避策です。

  1. 独自のクエリを実行するだけで、すべてのユーザーを取得できます。
  2. SimpleMembership から派生した独自のメンバーシップ プロバイダーを作成し、それらの関数を実装できます。
  3. SqlMembershipProvider (またはユニバーサル プロバイダー) に戻ることができます (ただし、WebSecurity は避けてください)。
于 2012-10-10T14:14:12.080 に答える