2014-10-09 76 views
0

在角色内寻找一点建议和访问级别的指导。MVC - 角色内的访问级别

我有一个MVC项目,使得使用AspNetRoles的,例如我有以下的角色设置: 联系 CustomerIndex CustomerCreate

在我的客户控制器我有:

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

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

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

我希望授予不同的用户读取访问不同的客户,即:用户1有CustomerIndex作用,但仅适用于ABC,DEF查看数据,然后用户2至具有CustomerIndex角色,但仅适用于客户XYZ,然后类似于CustomerCreate角色。

所以如果User1运行到客户页面,他将只与客户数据为ABC,DEF 如果用户2做同样提出,他将只能看到数据为客户XYZ

什么是最好的方式实现这样的事情?

+0

您在这里遇到了复杂的情况,只有采用基于角色的方法才能实现此目标。但是,您可以在创建用户期间创建声明,然后使用您的需求使用基于声明的权限。 – DSR 2014-10-10 10:00:11

回答

0

就您而言,用户可以看到的客户与他们所拥有的角色没有真正的关联。您需要考虑通过您的应用业务逻辑回收过滤的客户列表,而不是试图通过角色来完成。

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

用户客户
用户1 ABC
用户1 DEF
用户2 XYZ

当与CustomerIndex角色的用户请求指数控制器,该授权属性将允许他们进入,然后在控制器本身,查询数据存储并返回当前用户的所有客户,并将其传回模型中的视图。创建控制器也一样。