2009-09-02 7 views
0

私の将来のWebアプリケーションでは、多くのユーザー役割が存在します。ユーザーの役割に応じて、webappはユーザーの特定の情報へのアクセスを制限する必要があります。私は、以下の機能を実装する必要があります。役割に応じてロールベースのセキュリティを維持するための複雑なソリューション

  • 役割に応じて、ユーザーが現在の役割のために利用できる(データグリッド内)のみの列と行が表示されるはずですし、ユーザー
  • を、ユーザーが読み取り専用でページを表示する必要がありまたは役割に応じて編集可能モード
  • で、ユーザは、ウェブページ上でこのような問題分離コードファイルに多くの条件付き演算子を使用して解決した(非常に簡単だった)私の以前のアプリケーションでは

を表示/非表示になっいくつかのコントロールを持っている必要がありますマークアップファイルでも使用できます。そのようなコードを維持することは非常に困難でした。

私は、IFでコードを壊さずに、あらゆるレベルのアプリケーション(データ、ロジック、ビュー)のロールベースのセキュリティを維持するための複雑なソリューションがあるのだろうかと思います。

psの両方は、Javaと.NETプラットフォーム向けのソリューションは、ポイント1について

答えて

0

興味深いものです:あなたは、現在のユーザーのアカウント/現在のユーザの役割に合わせてデータアクセスとフィルタリングロードされた行をカプセル化することによってこれを実現することができます。

これを実装して、データレイヤー内の他のユーザーからの行への書き込みアクセスを防止する同様のメカニズムを使用しました。これにより、ビジネスレイヤーに書き込みアクセスセキュリティチェックを書き込む必要がなくなりました。

+0

DAOでどのように実装しましたか? 好きではない:? if(userRole == 'admin'){} if(userRole == 'role1'){} .. if(userRole == 'role'){} まだビューがどのように表示されるかに問題がありますon role – kilonet

+0

私のデータ層はLinqToSQLに基づいており、読み込み専用の場合は、where句を使用して結果をその特定のユーザに属する行に限定します。書き込みは少し複雑で、私のアプローチはLinqなしではうまくいかないかもしれませんが、行の所有者によるデータベース操作を制限するために、update/deleteクエリに追加のwhere句を追加することでこれにアプローチすることもできます。 –

関連する問題