【发布时间】:2010-01-25 20:55:17
【问题描述】:
所以,我已经成功实现了我自己的 MembershipProvider,它的工作方式完全符合我的预期。
我已经用 [Authorize] 属性修饰了我的控制器动作,这也完全按照我的意愿工作。
我的问题是,我应该将决定使用“多少”访问权限的代码放在哪里?
[Authorize] 仅表示当前用户是系统的有效用户。当前用户的 UserAccess = 1、或 2、或 4、或 8 或其他。我会在 Controller 方法中执行此检查吗?还是应该将用户传递给我的 Repository 类,并让 Repository 类只返回当前用户有权访问的那些记录?
换句话说,分离这种担忧的最佳方法是什么?因为它与身份验证有关。我在想我应该将用户传递给 Repository.GetData() 方法,并让它执行必要的查找。
这个问题的第二部分,我如何根据用户限制对特定视图的访问?例如,如果当前用户的 UserAccess = 2,我想省略一些字段,但如果它的 UserAccess = 4,我想显示所有字段。
更新
经过更多研究,如果我实现自己的 RoleProvider,我似乎可以用一块石头杀死两只鸟——我知道我可以如何做到这一点来限制控制器 [Authorize(Roles = "Admin)] 上的数据访问,并且它看起来对我来说是最好的选择。如何使用它根据角色以不同方式呈现我的视图?我会制作单独的视图并从控制器返回正确的视图吗?还是使用内嵌 C# 制作一个视图?
【问题讨论】:
标签: c# .net asp.net-mvc authentication