【问题标题】:Looking for data-driven security framework for .net为 .net 寻找数据驱动的安全框架
【发布时间】:2012-07-17 05:19:51
【问题描述】:

我正在开发一种 CRM 系统,它需要一个基于数据的*ed 安全机制,而不是基于角色的安全机制。

比如系统中的某个用户可以view所有客户端,update自己的客户端。

因此,基于角色的安全在这里不会有帮助,因为所有销售人员都有相同的角色:sales_user_role

我需要通过在每个 client 行中都有一个字段来区分它们:sales_owner_id

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

}

在上述情况下,client 对象是具有 salesOwnerId 的客户实体。
由于上面是意大利面条代码,我想在数据驱动的安全框架中进行。

我正在使用 c# .NET4、MVC3、WCF、Nhibernate 和 Spring 进行依赖注入。

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

谢谢

【问题讨论】:

  • 您所描述的是“所有者”的隐含角色,每个用户将拥有与他们在数据库中拥有的对象相关的角色......需要根据所有权确定授权的对象将需要在服务或 BO 中提供某种“交互用户是我的所有者”的方法。
  • 我可以为 Rhino Security 担保。阅读单元测试,它们很容易理解。

标签: .net data-driven security-framework


【解决方案1】:

您仍然可以通过经典的基于角色的授权(例如RoleProvider)实现您想要的。

例如,您可以担任以下角色:

ViewOwnClients
ViewAllClients
UpdateOwnClients
UpdateAllClients
DeleteOwnClients
DeleteAllClients

您仍然需要代码来测试所有者 ID,例如:

if ((User.IsInRole("UpdateAllClients") ||
    (User.IsInRole("UpdateOwnClients") && client.OwnerId = currentUserId))
{
    ...
}

【讨论】:

    猜你喜欢
    • 2013-03-03
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 2011-11-09
    • 1970-01-01
    相关资源
    最近更新 更多