1

私は、役割ベースのセキュリティメカニズムよりも データベースベースのセキュリティメカニズムを必要とする一種のCRMシステムを開発しています。

たとえば、システム内の特定のユーザーは、viewすべてのクライアント、つまりupdate自分のクライアントを使用できます。

したがって、すべての営業担当者が同じ役割を持っているため、役割ベースのセキュリティはここでは役に立ちませんsales_user_role

すべてのクライアント行にフィールドを設定して、それらを区別する必要があります。sales_owner_id

if(client.salesOwnerId.Equales(httpSession["user_id"]){
   delete...
   update...

}

上記の場合、clientオブジェクトはsalesOwnerIdを持つクライアントエンティティです。
上記はスパゲッティコードなので、データ駆動型のセキュリティフレームワークでやりたいと思います。

私は依存性注入のためにc#.NET4、MVC3、WCF、Nhibernate、Springを使用しています。

(私はそれを行うサイのセキュリティを見ましたが、それは文書化されておらず、学習リソースがほとんどありません)

ありがとう

4

1 に答える 1

0

などの従来の役割ベースの承認を使用しても、目的を達成できる場合がありますRoleProvider

たとえば、次のような役割を持つことができます。

ViewOwnClients
ViewAllClients
UpdateOwnClients
UpdateAllClients
DeleteOwnClients
DeleteAllClients

所有者IDをテストするためのコードがまだ必要です。例:

if ((User.IsInRole("UpdateAllClients") ||
    (User.IsInRole("UpdateOwnClients") && client.OwnerId = currentUserId))
{
    ...
}
于 2012-11-24T22:56:59.363 に答える