基于用户角色的多个MVC存储库
本文关键字:MVC 存储 角色 于用户 用户 | 更新日期: 2023-09-27 18:03:33
我正在构建一个使用存储库访问数据的MVC (Microsoft)应用程序。
我有一个需求,其中基于用户角色,您可以或不可以访问某些数据块,或数据表中包含标志或值的某些行。
基本上,我需要根据角色自定义从存储库返回的数据。
你有什么建议?
1)在同一个IRepository中创建一个"public"和一个"private"具体存储库,并自定义其中的逻辑,然后根据角色隶属关系在控制器上进行实例化。
2)在我的一个存储库中创建私有方法,并根据公共/私有角色的隶属关系选择正确的方法。
3) ?
谢谢。
其他
让它成为数据驱动的,否则你将在一个痛苦的世界结束。
角色倾向于成长
创建将角色映射到属性的表,如果属性-角色关系不限于can/can,则使用标志,然后创建可以根据表中的输入生成对象的工厂,然后定义接口,并创建处理这些基于角色的属性的控制机制。是的,现在听起来有点复杂。:)
根据定义,存储库执行CRUD,其中不应该有逻辑(据我所知)。
命中存储库的查询应该处理不检索X信息的问题,因为用户Y没有权限查看它。
如果您将业务逻辑排除在存储库之外,您会发现它更容易维护。
编辑:这只是一个意见,我远非一个无所不知的强大的Jon Skeet;)