这更像是一个架构问题。假设我们有不同类型的用户登录到系统,并且我们有一个“客户”实体。根据用户的权限,我可能想要返回不同的“客户”属性子集。我也可能希望只允许编辑某些属性。
关于走哪条路有什么建议吗?以下是我迄今为止想到的选项:
- 对于每个权限级别,扩展模型 - 并根据用户权限返回最远的后代。在输入端,接受最远的后代并仅将其转换为正确的后代。(似乎有很多隐含的逻辑 - 似乎不是很优雅)
- 创建不同的方法(杂乱的 API,意味着比我想公开的更多的功能)
还有其他建议吗?
谢谢
这更像是一个架构问题。假设我们有不同类型的用户登录到系统,并且我们有一个“客户”实体。根据用户的权限,我可能想要返回不同的“客户”属性子集。我也可能希望只允许编辑某些属性。
关于走哪条路有什么建议吗?以下是我迄今为止想到的选项:
还有其他建议吗?
谢谢
您所描述的是 XACML 的一个明确的用例。XACML 是可扩展访问控制标记语言。它允许您使用属性(关于用户、资源、环境......)定义细粒度的访问控制。
它是基于策略的,这意味着您可以编写如下内容:
有几个 XACML 引擎(WSO2,Java 的 Heras AF;.NET 的 Axiomatics)。
我在 .NET 4.0 框架中开发了很多 ASP .NET Web 应用程序,并设法在表示层、WCF 层和数据层应用授权。请随时 ping 我以获取更多信息。