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 进行依赖注入。

(我看到 rhino security 可以做到这一点,但没有记录,学习资源也很少)

谢谢

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 回答