我正在开发一种CRM系统,它需要有一个数据基础*ed安全机制,而不是基于角色的安全机制。
例如,系统中的某个用户可以view
所有客户端,update
他自己的客户端。
因此,基于角色的安全性在这里没有帮助,因为所有的销售人员都有相同的角色:sales_user_role
。
我需要通过在每个客户端行中都有一个字段来区分它们:sales_owner_id
if(client.salesOwnerId.Equales(httpSession["user_id"]){
delete...
update...
}
在上述情况下,CCD_ 5对象是具有salesOwnerId的客户端实体
由于以上是意大利面条代码,我想在数据驱动的安全框架中完成它。
我正在使用c#.NET4、MVC3、WCF、Nhibernate和Spring进行依赖注入。
(我看到犀牛安全这样做,但它没有记录在案,学习资源也很少)
感谢
使用经典的基于角色的授权,例如RoleProvider
,您仍然可以实现您想要的功能。
例如,您可以具有以下角色:
ViewOwnClients
ViewAllClients
UpdateOwnClients
UpdateAllClients
DeleteOwnClients
DeleteAllClients
您仍然需要代码来测试所有者id,例如:
if ((User.IsInRole("UpdateAllClients") ||
(User.IsInRole("UpdateOwnClients") && client.OwnerId = currentUserId))
{
...
}