我正在构建一个使用存储库访问数据的MVC(Microsoft)应用程序。
我有一个要求,根据用户角色,您可能会或可能不会访问某些数据,或数据表中包含标记或值的某些行。
基本上我需要根据角色自定义从存储库返回的数据。
你有什么建议?
1)从同一个IRepository创建一个“公共”和“私有”具体存储库,并自定义每个存储库中的逻辑,然后根据角色成员资格在控制器中进行实例化。
2)在我的一个存储库中创建私有方法,并根据公共/私有角色成员资格选择正确的方法。
3)其他?
感谢。
答案 0 :(得分:0)
其他强>
Make it data driven,否则你最终会痛苦地说出来
角色往往会增长
的更新强>
创建将角色映射到属性的表使用标志,如果属性 - 角色关系比可以/不能更多,然后根据该表的输入创建可以生成对象的Factory,然后define interface,并创建控制机制来处理这些基于角色的属性
是的,现在听起来有些复杂。 :)
答案 1 :(得分:0)
根据定义,存储库执行CRUD,其中不应该有逻辑(据我所知)。
遇到您的存储库的查询应该处理不检索X信息,因为您的用户Y没有权限查看它。
如果您将业务逻辑保留在存储库之外,您会发现它更容易维护。
编辑:这只是一种意见,我远不是一个全知的强大的Jon Skeet;)