ASP.NET 2.0 [ajax...まだ]Webサイトがあり、コンパイルされた形式で複数の顧客サイトに展開されます。通常、サイトはイントラネットのみになります。一部の顧客はすべての人を信頼し、サイトやページ機能へのアクセスを制限することを気にしません。他の顧客は誰も信頼せず、特定の人やグループだけが特定のページを表示したり、特定のボタンをクリックしたりできるようにしたいなどです。 al。
自家製のソリューションを実行して、データベーステーブルからアクセス許可を取得することもできますが、その道を進む前に、SOで質問すると思いました。この状況に適したソリューションは何ですか。Webサイトを再構築することはできないため、web.configファイルやデータベースで完全に制御できるものが望ましいです(クライアントにとっては、何度も何度も行う必要はありません)。Active Directoryの統合はボーナスですが、必須ではありません(それが簡単でない限り)。
出発点として、サイト内の各ページ/ファンクションポイントにIDが与えられ、アクセス許可グループに関連付けられていると思います...
編集:役割とユーザーによるアクセスを許可/拒否するweb.config承認セクションは良いですが、それは問題の半分にすぎません-残りの半分は、各ページの個々のメソッド(ボタンなど)へのアクセスを制御しています。たとえば、一部のユーザーはwhatchamacallitsを表示できますが、他のユーザーはそれらを編集、作成、削除、または無効化/有効化できます。これらのボタン/リンク/アクションはすべて表示ページにあります...
[理想的には、無効にしたボタンを非表示にしますが、ここでは重要ではありません]
編集:これまでのところいくつかの良い提案がありますが、完全な解決策はまだありません-まだデータベース駆動型の解決策に傾いています...
- セキュリティ許可要求属性は、ボタンがクリックされたときに例外をスローしますが、これは簡単なことではありません。ユーザーが使用を許可されていないボタンを非表示にしたい
- LoginViewコントロールも興味深いものですが、ほとんどのページコンテンツを数回(ロールごとに1回)複製する必要があり、ユーザーが複数のロールに属している場合は処理できない可能性があります。ロールが階層的であるとは想定できません。お客様が定義します
編集:プラットフォームはWin2K / XP、SQL Server 2005、ASP.NET 2.0であり、AJAXを使用していません