0

現在、ASP.NET MVC Web アプリケーションを構築しています。私のサイトのセキュリティは、(現在) System.Web.Security メンバーシップ モデルを拡張したものの上に構築されています。

  • AuthorizeAttribute
  • メンバーシッププロバイダー
  • RoleProvider

セキュリティ メカニズムとしてはこれで十分です。多くのことが複雑になりましたが、おそらくもっと簡単にできたはずです。しかし、それは完了しており、非常に有益な学習経験でした. 後で、すべてを切り取ってサイト固有のモデルに置き換えることもできますが、すべてのユーザー プロファイル情報を、サイト専用にインデックス化および構築された 1 つのテーブルに保持したいと考えています。

次に、ユーザーの個人プロファイルの開発に移ります。基本的なユーザー ログイン システムよりも多くのユーザー情報を保存する必要があります。ProfileProvider をチェックアウトしましたが、まったく別のワームのようです。オブジェクトを再構築する必要なく、web.config から直接ユーザー プロファイルを構成できる柔軟性があり、ProfileProvider が残りを処理する点が気に入っています。しかし、私が恐ろしいのは、これが原因でクエリを実行したり、データベースでレポートを作成したりする PITA です。この事実は、ProfileProvider に対する私の判断を曇らせている可能性があります。ProfileProvider は、これに使用する適切なモデルですか?

既存のシステムのカスタマイズで行ったのと同じ道を進むべきですか、それとも独自のシステムをカスタム構築するべきですか?

一方で、ProfileProvider のカスタマイズを行うことは有益な学習体験になる可能性がありますが、他方では、これが急速にレポートとクエリの悪夢になりつつあることがわかります。しかし、自分でコーディングすると、クエリ/レポート作成が非常に簡単になりますが、学ぶことは少なくありません。

誰かが ProfileProvider モデルの使用またはカスタマイズの経験があり (それが実際に私が使用すべきものである場合)、有用な読み物の方向に私を向けることができるか、より有用な方向に私を導くことができる場合、私は本当に感謝していますそれ。

前もって感謝します。

4

2 に答える 2

0

データベース内のテーブルを使用してセキュリティを実装しています。テーブルベースのアプローチは、実装が簡単で、理解しやすく、トリミングするアイテムのテーブルにテーブルを結合するだけでセキュリティトリミングを提供します。レポートは簡単で、テーブルベースのセキュリティをロールにも使用できます。

ASP.NET MVCの既存のセキュリティモデルが面倒であることがわかりましたが、必要な処理の一部が実行されませんでした。特に、データベースからIDへのアクセスを必要とするドキュメントレコードなどに属性を適用することは困難です。これは、レコードを2回検索することになります。1回は属性クラスに、もう1回はコントローラーメソッドのリポジトリにあります。

他のすべての条件が同じであれば、2つではなく1つのセキュリティシステムを維持したいと思います。そのため、組み込みのセキュリティを使用してユーザーを認証しますが、その後、テーブルベースのセキュリティに切り替えます。

于 2009-11-19T15:54:52.483 に答える
0

Microsoft が提供する基本クラスに基づいて、独自の MembershipProvider、RoleProvider、および ProfileProvider を実装する方法があることをいくつかの本や多くのブログで読みました。しかし、最終的には、すべてのコードを独自のカスタム ベースのセキュリティ スキーマに変更することになりました。これにより、必要なすべての柔軟性が得られます。

問題は、これらのプロバイダーがシステムに対応できない可能性のある多くの仮定を行うことです。たとえば、MembershipProvider の create メソッドには、パラメーターとして質問と回答が必要です (これは必要ありませんでした)。または、別の属性が必要な場合は、コーディングと保守が面倒になり始めます..そして、それをテストすることについては話さないようにしましょう.

あなたが言ったように、学習経験は常に良いですが、それを自分のニーズに合わせるために維持しなければならなかったコードの量は、それだけの価値がありませんでした.

AuthorizeAttributte に関しては、独自のセキュリティ スキーマに適合する独自のフィルターを作成しました。

私のアドバイス?要件が Microsoft の ProfileProvider の外観に適合する場合は、それを選択してください。そうでない場合は、独自に作成してください。彼らが実行するプラクティスの一部をコピーすることはできますが、必要に応じて変更する自由が与えられます。

于 2009-11-19T18:38:43.230 に答える