私は、MVC 4 でのメンバーシップ プロバイダーの変更に関するさまざまな SO の質問、ブログ投稿などを調べてきました。多くの変更と物事の簡素化が気に入っていますが (特に、すぐに使用できる外部ログイン)サポート)、私はまだ一見単純なものを見つけることができません...
別のデータ ソースを使用するカスタム プロバイダーでメンバーシップ/ロール プロバイダーをオーバーライドするにはどうすればよいですか?
WebSecurity
私が処理したいすべてのことを処理するので、交換したり、それほど抜本的なことはしたくありません。(たとえば、Cookie の管理。) 外部ログイン プロバイダーの既存のサポートを壊すようなことはしたくありません。私のアプリケーションはローカル ログインと組み合わせてそれらを使用するからです。私がやろうとしているのは、メンバーシップ システムとその背後にあるデータベースの間に介入し、そのデータ フェッチをカスタマイズすることだけです。
デフォルトで作成されるテーブルは次のとおりです。
- ユーザープロフィール
- webpages_Membership
- webpages_OAuthMembership
- webpages_Roles
- webpages_UsersInRoles
それが機能している間は、いくつかのカスタム オブジェクトの背後でこれを抽象化し、アプリケーションとデータベースの間の結合を解除する必要があります。(基本的に、私はこれらすべてを処理する必要があるビジネス ロジックでいっぱいのカスタム ドメイン モデルをいくつか持っており、メンバーシップ/ロール システムでデータベースの代わりにそれらのモデルを使用する必要があります。これらのモデルは、データベースから永続化されたデータを取得する可能性があります。違います。それは問題ではありません。)
カスタマイズについて私が見つけた参照のほとんどは、モデルを変更し、さまざまな呼び出しに新しいカスタム フィールドを含め、データベース スキーマを指すようにUserProfile
呼び出しを更新するだけで、簡単に実行できると主張しています。InitializeDatabaseConnection
しかし、私はデータベースを使用していません。(または、より具体的には、アプリケーション層に関する限り、データベースのようなものはありません。私のドメイン モデルだけです。) したがって、簡単なカスタマイズは実際には何も変更しません。
既存のメンバーシップ プロバイダー用のカスタム データ プロバイダーを作成できるように、メンバーシップ システムとデータベースの間に介入する方法はありますか?