質問

Ok、私は少しアーキテクチャのガイダンスを探しています、私のチームは私たちが構築している新しい機能で特定の決定を再キャストする機会を得ています、そして私はSOが何を考えたかを見たかったです:-)もちろん、私たちが変更していない特定のことがあるので、ソリューションはこのモデルに適合しなければなりません。つまり、Webサービスを使用してユーザーがシステム上でアクションを実行できるようにするASP.NETアプリケーションがあります。

多くのシステムと同様に、さまざまなユーザーがさまざまな機能にアクセスする必要があるため、問題が生じます。一部のロールにはYボタンへのアクセス権があり、他のロールにはYおよびBボタンへのアクセス権がありますが、別のロールにはまだBへのアクセス権しかありません。ほとんどの場合、開発者は処理するifステートメントのミッシュモッシュを入れますUIの状態。私の恐怖は、承認されていないユーザーが特定のメソッドを呼び出すことを保証するために、承認ロジックをGUIに配置することに加えて、Webサービス(ajax経由で呼び出される)に配置する必要があるため、これは維持できない混乱になることです。

あなたへの私の質問は、GUI / WebフォームコードとWebサービスの両方で再利用できる特定の役割をチェックするあちこちのランダムアドホックifステートメントを減らすようにシステムを設計する方法ですコード。

わかりやすくするために、これはwebformsと Script# AJAX機能用。 script#に答えさせないでください。それはasp.net ajaxと根本的に違いはありません:-)

役に立ちましたか?

解決

従来のグループ、ロール、または操作レベルの権限から移動すると、「クレームベース」へのプッシュがあります。 WCFで提供されたもののような承認。

Zermatt は、Microsoftクラスのコードネームです。開発者がサーバーとクライアントでクレームベースのアプリケーションを構築するのに役立つライブラリ。 Active Directoryは、アプリケーションが他の業界標準サーバーと同様に独自のサーバーと同時に認証できるSTSの1つになります...

他のヒント

In Code Complete(p。411)Steve McConnellは、次のアドバイスを提供しています(Bill GatesはMicrosoftコマーシャルの就寝前の話として読んでいます)。

"適切な状況で使用されるテーブル駆動型コードは、複雑なロジックよりもシンプルで、変更が簡単で、効率的です。

"テーブルを使用して、コードで表現するには動的すぎるロジックを記述することができます。"

"テーブル駆動型のアプローチは、以前のアプローチよりも経済的です[オブジェクト指向設計を回転させる]"

テーブルベースのアプローチを使用すると、新しい「ユーザー」を簡単に追加できます(ユーザー/エージェントのアクションとモデリングのアイデアのように)。多くの「if」を避ける良い方法です。そして、私はあなたのような状況のためにそれを以前に使用しました、そして、それはコードをきれいで整然としたままにしました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top