对于我的应用程序,我需要设置基于角色的授权。我在网上看到一些样品,但我的要求有点不同。我有管理员,管理员,提交者等角色。然后我有子角色,如区域经理,国家经理,区域管理员,国家管理员,区域提交者,国家提交者等,所以像角色和子角色。
我的问题是,当我在.net MVC中设计这个时,我应该将子角色视为角色,并根据区域和子区域定义10个不同的角色,或者我应该将角色分组为admin,submitter&管理器,然后在代码中单独处理子角色?
什么是正确的设计?
我可以查看任何样品吗?
感谢。
答案 0 :(得分:2)
对于许多应用程序,我一直受到同样的困扰。虽然我的角色有不同的名字。使用您的命名结构,我倾向于遵循您的建议的前一个结构。
如果用户具有以下角色:Manager,Country。
您的用户仍然可以使用[授权(角色=“经理,区域”)]标记的操作, 但在[授权(角色=“区域经理”)]
标记的行动中不允许这样做我无法找到使用[授权]属性禁止角色的方法(如果不在角色中,或在角色中扮演角色)。
另一种想法,如果你有一个特定于管理者的控制器,你可以在控制器上设置[Authorize(Roles =“Manager”)]属性,并将操作设置为[授权(角色=“区域”)]或[授权(角色=“国家”]视需要。
我认为,这只允许用户在某些操作中(例如)“管理员”和“区域”角色,这些操作要求用户同时担任这两种角色。这样,您可以将“经理”,“区域”和“国家”角色分开。这应该可以更容易地根据需要为用户分配角色。