基于用户角色的多个MVC存储库

时间:2014-05-14 14:10:13

标签: c# asp.net-mvc security repository roles

我正在构建一个使用存储库访问数据的MVC(Microsoft)应用程序。

我有一个要求,根据用户角色,您可能会或可能不会访问某些数据,或数据表中包含标记或值的某些行。

基本上我需要根据角色自定义从存储库返回的数据。

你有什么建议?

1)从同一个IRepository创建一个“公共”和“私有”具体存储库,并自定义每个存储库中的逻辑,然后根据角色成员资格在控制器中进行实例化。

2)在我的一个存储库中创建私有方法,并根据公共/私有角色成员资格选择正确的方法。

3)其他?

感谢。

2 个答案:

答案 0 :(得分:0)

其他

Make it data driven,否则你最终会痛苦地说出来 角色往往会增长 的更新
创建将角色映射到属性的表使用标志,如果属性 - 角色关系比可以/不能更多,然后根据该表的输入创建可以生成对象的Factory,然后define interface,并创建控制机制来处理这些基于角色的属性  是的,现在听起来有些复杂。 :)

答案 1 :(得分:0)

根据定义,存储库执行CRUD,其中不应该有逻辑(据我所知)。

遇到您的存储库的查询应该处理不检索X信息,因为您的用户Y没有权限查看它。

如果您将业务逻辑保留在存储库之外,您会发现它更容易维护。

编辑:这只是一种意见,我远不是一个全知的强大的Jon Skeet;)