0

这更像是一个架构问题。假设我们有不同类型的用户登录到系统,并且我们有一个“客户”实体。根据用户的权限,我可能想要返回不同的“客户”属性子集。我也可能希望只允许编辑某些属性。

关于走哪条路有什么建议吗?以下是我迄今为止想到的选项:

  1. 对于每个权限级别,扩展模型 - 并根据用户权限返回最远的后代。在输入端,接受最远的后代并仅将其转换为正确的后代。(似乎有很多隐含的逻辑 - 似乎不是很优雅)
  2. 创建不同的方法(杂乱的 API,意味着比我想公开的更多的功能)

还有其他建议吗?

谢谢

4

1 回答 1

2

您所描述的是 XACML 的一个明确的用例。XACML 是可扩展访问控制标记语言。它允许您使用属性(关于用户、资源、环境......)定义细粒度的访问控制。

它是基于策略的,这意味着您可以编写如下内容:

  • 用户可以查看与用户在同一区域的客户记录
  • 用户可以编辑他们直接分配到的客户记录
  • 审核员可以查看整个业务部门的客户记录,敏感字段除外

有几个 XACML 引擎(WSO2,Java 的 Heras AF;.NET 的 Axiomatics)。

我在 .NET 4.0 框架中开发了很多 ASP .NET Web 应用程序,并设法在表示层、WCF 层和数据层应用授权。请随时 ping 我以获取更多信息。

于 2013-02-08T12:16:28.423 回答