私は ASP.Net MVC 4 を使用してアプリケーションを開発しており、ページ上のデータ要素、ユーザーがデータに対して実行できる特定のアクションなど、詳細なレベルでユーザーを承認できる必要があります。
現在、担当者に役割を割り当てており、その役割にはアクティビティのアクセス許可 (表示、追加、編集、および削除) が割り当てられています。役割と許可の値 (許可のビットごとの値を使用しています) がアクティビティに割り当てられます。現在、ASP.Net MVC アプリでアクティビティをアクションとして定義しています。したがって、MVC アクションに移動するには、ユーザーは少なくともそのアクションの表示権限を持っている必要があります。そうでない場合、ユーザーはアクションにアクセスできません。そのアクション内でユーザーができることは、他の権限 (追加、編集、削除) によって異なります。
これはOKなアプローチです。パーミッションはすべてデータベースに保存されているため、UI 自体からパーミッションを切り離しました。たとえば、データ入力フォームをロードするボタンを表示する前に、ユーザーが「追加」権限を持っているかどうかを確認するだけです。
私は、このアプローチが十分に細分化されていないことを確信しています。たとえば、そのような役割でユーザー X からデータ列を非表示にする必要がある場合、私のアプローチでその要件に対応する方法がわかりません。現在、表示権限はオール オア ナッシングです。
ユーザーに表示される内容を制御するビュー コードに一連の if ステートメントを挿入するのは非常に気が進まない。これにより、UI がセキュリティ メカニズムに緊密に結合されます。言うまでもなく、これをまったく維持することはできません。
そのため、セキュリティ メカニズムをよりきめ細かくする方法と、適切な分離を維持する方法について困惑しています。これについて考えると、コードに多数の if ステートメントを挿入するという現在のアプローチから直接飛び出しています。私は代替案を見ていません。ベスト プラクティスに関するアドバイス、例へのリンクなどは、非常に高く評価され、必要とされています。御時間ありがとうございます。