MVC - 角色内的访问级别

时间:2014-10-09 11:52:02

标签: model-view-controller asp.net-identity user-roles

在角色中寻找访问级别的一些建议和方向。

我有一个使用AspNetRoles的MVC项目,例如我有以下角色设置: 管理员 CustomerIndex CustomerCreate

在我的客户控制器中,我有:

[Authorize(Roles = "Admin, CustomerIndex")]
public ActionResult Index() ....

[Authorize(Roles = "Admin, CustomerCreate")]
public ActionResult Create() ...

我想要做的是根据用户在角色中的访问级别来限制用户可以查看和执行的操作 让我们说我有以下客户:ABC,DEF,XYZ

我想授予不同用户对不同客户的读取权限,即:User1具有CustomerIndex角色但仅查看ABC,DEF和User2的数据以具有CustomerIndex角色,但仅针对客户XYZ,然后类似于CustomerCreate角色。

因此,如果User1运行到客户页面,他将只会看到ABC,DEF的客户数据 如果User2执行相同操作,他将只看到客户XYZ的数据

实现这样的目标的最佳方式是什么?

1 个答案:

答案 0 :(得分:0)

在您的情况下,用户可以看到的客户与他们拥有的角色并不真正相关。您需要考虑通过应用程序业务逻辑来恢复已过滤的客户列表,而不是尝试通过角色来实现。

在您的示例中,您需要某种带有User列和Customer列的数据存储。

用户 客户
User1 ABC
User1 DEF
User2 XYZ

当具有CustomerIndex角色的用户请求索引控制器时,Authorize属性将允许他们访问,然后在控制器本身中,您查询数据存储,并返回当前用户的所有客户并将其传递回您的视图在一个模型中。 Create控制器也是如此。