使用 .Net Membership / Roles 支持自定义授权/访问规则

Posted

技术标签:

【中文标题】使用 .Net Membership / Roles 支持自定义授权/访问规则【英文标题】:Using .Net Membership / Roles to support customized authorization/access rules 【发布时间】:2012-02-23 18:13:32 【问题描述】:

我正在编写一个支持可自定义用户和角色的应用程序。通过可定制,我的意思是将提供一个管理表单,允许添加用户、创建角色、将用户分配给角色,以及最重要的是将授权规则与角色相关联的能力。在查看角色时,将向管理员显示一系列复选框,例如,允许他们根据自己的判断为程序功能区域授权角色。我需要能够在应用程序中编写代码,例如:

if (!currentUser.IsAuthorizedTo(AuthorizationRules.ADD_ORDER))
//Show not authorized message or prompt for elevation

IsAuthorizedTo 将查看当前用户的角色并确定其中任何人是否具有必要的授权。

我查看了 API 文档,只发现了 web.config 授权部分,这不是最佳的。我猜我可能不得不自己动手,但我想我应该先问:

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

【问题讨论】:

【参考方案1】:

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

更多here.

更新:

这是来自NerdDinner 项目的示例:

[Authorize(Roles="admin")]
public ActionResult Create() 
    ...

【讨论】:

这很有趣,但它不允许运行时自定义。角色需要在编译时定义,我的用例不允许这样做。我需要能够在运行时定义角色及其授权。不过,谢谢。【参考方案2】:

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

【讨论】:

以上是关于使用 .Net Membership / Roles 支持自定义授权/访问规则的主要内容,如果未能解决你的问题,请参考以下文章

membership与成员资格

使用 .Net Membership / Roles 支持自定义授权/访问规则

ASP.NET Membership 作为用户登录

ASP.net Membership角色与权限管理

新站点创建和安全/身份验证,- 我应该使用 ASP.net Membership Provider 吗?

如何不使用 ASP.Net Membership Security Question and Answer 进行自定义密码恢复?