我正在开发一种CRM系统,需要比基于角色的安全机制更具数据基础* ed 安全机制。
例如,系统中的某个用户可以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安全性,但没有记录,并且学习资源很少)
由于
答案 0 :(得分:0)
您仍然可以通过基于角色的经典授权实现所需目标,例如RoleProvider
。
例如,您可以拥有以下角色:
ViewOwnClients
ViewAllClients
UpdateOwnClients
UpdateAllClients
DeleteOwnClients
DeleteAllClients
您仍然需要代码来测试所有者ID,例如:
if ((User.IsInRole("UpdateAllClients") ||
(User.IsInRole("UpdateOwnClients") && client.OwnerId = currentUserId))
{
...
}