快捷搜索:

ASP.NET使用EntLib的授权机制实现自动授权

ASP.NET默认采纳UrlAuthorizationModule和FileAuthorizationModule分手实现针对哀求地址和物理文件的授权,然则在很多环境下我们必要额外的授权要领。Entlib供给了一种基于表达式的授权要领,它容许我们以一个表达式的要领来定义授权的规则。在新的项目中我们盼望使用EntLib的授权框架来实现针对ASP.NET页面的自动授权,本文描述的办理规划是我刚刚想到的,盼望广大年夜网友同伙们赞助评估一下。[源代码从这里下载]

目录

一、实例演示

二、AuthorizationFilterAttribute

三、AuthorizeAttribute

四、PageBase

一、实例演示

我们先来作一个简单的实例演示。如下所示的EntLib安然模块的设置设置设备摆设摆设,假如读者对此不懂得也没有关系,在这里我们只必要关注定义此中的一个授权规则(Authorization Rule):“I:Foo OR R:Admin”。这是一个逻辑表达式,前缀I:和R:分腕表示用户名(Identity)和角色(Role),全部表达式表示的授权逻辑是:“帐号为Foo的用户和所有具有Admin角色的用户”有权限措施与此表达式关联的操作或者资本。设置设置设备摆设摆设还定义了该授权规则的名称“FooOrAdmin”。

1: configuration>

2:configSections>

3:section name="securityConfiguration"

4:type="Microsoft.Practices.EnterpriseLibrary.Security.Configuration.SecuritySettings,

5:Microsoft.Practices.EnterpriseLibrary.Security"/>

6:configSections>

7:securityConfiguration defaultAuthorizationInstance="Authorization Rule Provider">

8:authorizationProviders>

9:add name="Authorization Rule Provider"

10:type="Microsoft.Practices.EnterpriseLibrary.Security.AuthorizationRuleProvider,

11:Microsoft.Practices.EnterpriseLibrary.Security">

12:rules>

13:add expression="I:Foo OR R:Admin" name="FooOrAdmin" />

14:rules>

15:add>

16:authorizationProviders>

17:securityConfiguration>

18: configuration>

我们添加一个必要授权的Web页面(Default.aspx),并且应用上面定义的表达式来作为该页面的授权规则,我们经由过程自定义的AuthorizeAttribute特点实现两者之间的关联(该特点构造函数中指定的字符串恰是设置设置设备摆设摆设的授权规则名称)。除此之外,Web页面对应的类型承袭自我们自定义的基类PageBase。

1: [Authorize("FooOrAdmin")]

2: public partial class Default : PageBase

3: {

4: }

您可能还会对下面的文章感兴趣: