SimpleMembershipの強力な概念の1つは、この記事で説明するように、アプリケーションのニーズに合わせてユーザープロファイルをカスタマイズできることです。たとえば、登録プロセスに確認の電子メールを追加すると、ユーザーの電子メールアドレスをユーザープロファイルに保存する必要があります。ASP.NETの以前のメンバーシップ/ロール管理では、これを実装するのは非常に醜く、追加されたプロパティはBLOBに格納されていました。うん!
では、これはSimpleMembershipをn層に対応させるための質問と何の関係があるのでしょうか。テンプレートが生成するものはn層に対応していないことに同意しますが、複雑なほとんどの実際のMVCアプリケーションでは、SimpleMembershipをカスタマイズする必要があるため、とにかくアプリケーション要件に固有の層または層を作成する必要があります。別の言い方をすれば、SimpleMembershipの再利用可能な層を作成することは、最も基本的なMVCアプリでのみ役立ちます。
個人的には、SimpleMembershipに関してインターネットテンプレートによって生成されるものはほとんど常に変更されるという結論に達しました。私が参照した最初の記事が指摘しているように、カスタマイズの最初の部分はSimplemembershipInitialization属性を取り除くことです。これは、開発者がフォーム認証を使用していない場合にSimpleMembershipを初期化するための怠惰な方法です。また、多くの場合、SimpleMembershipで使用されるDBContextを、アプリケーションの残りの部分のDBContextに移動する必要があります。多くの場合、ユーザープロファイルは、アプリケーションドメインの残りの部分と緊密に統合されています。
そして、私たちはSoCとASP.NETのセキュリティをテーマにしているので、ASP.NETはこれがあまり得意ではなかったと私は主張します。フォーム認証の場合、コントローラーでAuthorize属性を使用するか、パラメーターとしての役割を果たすアクションを使用します。これにより、アプリケーション開発者は、アプリケーションドメインを設計する際に、セキュリティ設計について考える必要があります。アプリケーションがどのような役割を事前に持つかを決定する必要があります。これらの属性をすべて調べてそれに応じて更新する必要があるため、後で変更することは禁じられています。リソース名と操作タイプ(例:読み取り、書き込み、実行...)をパラメーターとして受け取るカスタム承認属性の使用を開始しました。次に、役割をデータベース内のリソース/操作にマップして、簡単に変更できるようにします。または、管理者がアプリケーションでの役割の実装方法を変更できるようにすることもできます。Microsoftは同じアプローチを取っています現在、ClaimsPrincipalPermissionAttributeは、 WIFを.NET4.5に組み込んでいます。
2013年3月8日更新
SimpleMembershipをMVCアプリケーションから切り離すSimpleSecurityというオープンソースプロジェクトをCodePlexで作成しました。あなたはここでそれについて読むことができます。開発者はSimpleSecurityを変更したいと思うでしょうが、これはオープンソースなので可能です。これが、再利用可能でより優れたSimpleMembershipに進化できるものであるかどうかを確認します。