C# 使用.Net成员资格/角色支持自定义授权/访问规则

C# 使用.Net成员资格/角色支持自定义授权/访问规则,c#,asp.net-membership,authorization,user-roles,granularity,C#,Asp.net Membership,Authorization,User Roles,Granularity,我正在编写一个支持自定义用户和角色的应用程序。通过自定义,我的意思是将提供一个管理表单,允许添加用户、创建角色、将用户分配到角色,最重要的是能够将授权规则与角色关联起来。查看角色时,管理员将看到一系列复选框,例如,允许他们自行决定授权程序功能区域的角色。我需要能够在应用程序中编写代码,例如: if (!currentUser.IsAuthorizedTo(AuthorizationRules.ADD_ORDER)) //Show not authorized message or prompt

我正在编写一个支持自定义用户和角色的应用程序。通过自定义,我的意思是将提供一个管理表单,允许添加用户、创建角色、将用户分配到角色,最重要的是能够将授权规则与角色关联起来。查看角色时,管理员将看到一系列复选框,例如,允许他们自行决定授权程序功能区域的角色。我需要能够在应用程序中编写代码,例如:

if (!currentUser.IsAuthorizedTo(AuthorizationRules.ADD_ORDER))
//Show not authorized message or prompt for elevation
其中,
IsAuthorizedTo
将查看当前用户的角色,并确定其中是否有人具有必要的授权

我查看了API文档,只找到了web.config authorizations部分,这不是最理想的。我猜我可能不得不自己动手,但我想我首先要问:


是否存在使用.net成员资格/角色api或其他建议系统(除.net成员资格api外)的现有方法,以允许基于角色和访问规则的细粒度授权?

AuthorizeAttribute具有可能有用的
角色
属性。它将某些控制器或操作限制为指定的角色

更多

更新:

以下是该项目的一个示例:


authorized属性
具有一个可能有用的
Roles
属性。它将某些控制器或操作限制为指定的角色

更多

更新:

以下是该项目的一个示例:


我认为您应该使用自定义授权,然后使用授权执行逻辑来检查当前用户是否具有当前操作的访问权限

我认为您应该使用自定义授权,然后使用授权执行逻辑来检查当前用户是否有权访问当前操作

这很有趣,但它不允许运行时定制。角色需要在编译时定义,这是我的用例不允许的。我需要能够在运行时定义角色及其授权。不过,谢谢。这很有趣,但它不允许运行时自定义。角色需要在编译时定义,这是我的用例不允许的。我需要能够在运行时定义角色及其授权。不过谢谢你。
[Authorize(Roles="admin")]
public ActionResult Create() {
    ...
}