2

动态授权用户角色的最佳方式是什么?事实上,我有一定的作用,改变加时赛,目前我有这样的代码我的一些actionscontorllers的:更改很多以配置新权限

 [Authorize(Roles = "Admin,MainFedration,FederationUser")] 
     public string ConfirmAccident(int? id) 
     { .... } 

那么,如果一个角色中添加或改变它的允许,我应该寻找和改变大多数的动作和角色配置新的许可。

删除这些冗余工作的最佳方法是什么?

回答

0

通过编写自定义授权属性,您可以将您的需求归档。请检查这篇文章codeproject

2

唯一的另一种方法是配置每个角色在数据库中的权限,然后子类AuthorizeAttribute,并重载逻辑以确定如何通过利用数据库存储的权限来确定允许哪些角色。

但是,应该指出,这是一个问题,主要是因为您不正确地使用角色。即使在正式的微软文档中,我也看到了这一切,这是问题的一部分。类似“Admin”的是;角色是不同的,应该是像“CanEdit”的东西。组或用户可以分配角色,因此“Admin”组中的任何用户都具有“CanEdit”角色。然后,您不必更改操作上的角色配置,因为无论哪个用户或组都具有编辑功能,编辑功能都是可编辑的。

1

也许你应该看看访问控制是如何组织的:https://nsecurity.codeplex.com/。下面是一个简单的解决方案,概述了访问控制条目,访问控制列表的原理,以及如何设置受安全限制影响的项目访问。这种(dis-)允许用户访问特定项目的方式非常类似于在Windows文件系统中组织的方式。

的想法很简单:不是给用户权限(不)做这做那,在项目守卫并授予权限/拒绝一次简单的条件被满足。换句话说,安全不是面向用户,而是面向“安全”。或者,键用于锁定/解锁门,但不防止用户在附近移动。