【发布时间】:2016-02-03 17:49:12
【问题描述】:
我有一个角色系统,管理员可以在其中创建新角色并根据页面菜单授予读取、写入、编辑和删除权限(每个页面菜单都有自己的控制器),然后将该角色分配给用户。
用户也可以有多个角色,但我已经知道了。我面临的唯一问题是:因为角色分配可以在应用程序内动态完成,所以我不能在控制器操作上使用[Authorize(Roles = Role.Admin)] 属性。
相反,我正在考虑创建 [Read]、[Write]、[Edit] 和 [Delete] 属性,我会将这些属性放在操作上,让我知道该操作的用途,然后允许或拒绝用户调用它行动。
这是正确的方法吗?我需要在这些自定义属性中拥有什么,我将如何允许/拒绝用户调用它们?有人有类似经历吗?
假设我有 Home 和 Admin 控制器以及 Role1 和 Role2 具有以下权限:
类似上述方法的方法可行吗?如何为控制器操作定义自定义访问?
我想避免将所有操作都放在数据库中并简化网站的管理。
通过这种方式,可以在控制器级别对 R/W/E/D 标志进行管理,而不是 Role1 可以对所有 Home/Index、Home/GetRecords 等...操作级别进行管理。
【问题讨论】:
-
是不是说任何有写权限的人也可以读?并且任何拥有编辑权限的人都可以读写?可以删除的人可以做之前的所有动作吗?
-
只需创建 CRUD 操作并指定哪个角色可以执行哪些操作(按属性)或为每个角色创建视图结构,每个角色配置将有单独的 web.configs。
-
@LiranBo 如果用户有任何其他标志,但 Edit 和 Write 不一样,他们将获得读取权限。写意味着添加新的东西,而编辑意味着......很好地编辑已经存在的东西。
标签: c# asp.net-mvc