Enterprise Library - Security Application Block 学习手册(最新版) Part 2

it2022-05-05  108

本系列文章引导学习Enterprise Library - Security Application Block,并实践如何在不同的应用程序环境中使用Security Application Block的功能。前一节中,使用基于角色的授权来保护应用程序,这一节将练习使用AuthorizationProvider来保护应用程序。本文由 http://blog.entlib.com 开源ASP.NET博客平台小组根据EntLib HOL手册编译提供,欢迎交流。   使用AuthorizationProvider实现如下功能: (1)映射基于任务的授权为复杂的角色组合; (2)从应用程序代码中提取授权;   练习二:在应用程序中使用基于规则的授权(Rule-Based Authorization 首先打开ex02\begin 目录下的BugSmak.sln 项目文件。   使用Enterprise Library 配置管理工具 1. 使用Enterprise Library配置工具打开app.config配置文件,添加新的Security Application Block配置项。     2. 选择Security Application Block | Authorization 节点,添加一个新的Authorization Rule Provider。     设置Name =BugSmak Rules。   3. 选择 Security Application Block | Authorization | BugSmak Rules 节点,通过New | Rule菜单项添加新的Rule。     4. 选择Security Application Block | Authorization | BugSmak Rules | Rule 节点,点击Expression属性后的… 按钮,弹出Rule Expression Editor对话框。     在Rule Expression Editor对话框中,设置如下属性: Rule Name = Raise Bug Expression = R:Developer OR R:Employee OR R:Manager     用户必须是Developer、Employee、或Manager角色。   5. 按照上述步骤,添加新的Rule和表达式。 规则名称:Assign Bug    --- 表达式Expression:R:Manager 规则名称:Resolve Bug    --- 表达式Expression:R:Developer OR R:Manager   设置完成后,界面如下图所示。     6. 选择Security Application Block节点,设置如下属性。 DefaultAuthorizationInstance = BugSmak Rules   最后保存好app.config配置文件。   为应用程序添加基于任务的授权 1. 打开TaskForms \ RaiseBug.cs代码文件,其中关于PrincipalPermissions部分的硬编码已经注释掉了,这里将采用更加灵活的任务授权。         //[PrincipalPermission(SecurityAction.Demand, Role = "Employee")]         //[PrincipalPermission(SecurityAction.Demand, Role = "Developer")]         //[PrincipalPermission(SecurityAction.Demand, Role = "Manager")]         public static RaiseBug Create()         {             // TODO: Check Authorization             if (!SecurityHelper.Authorized(AuthRule.Raise))             {                 throw new SecurityException();             }               return new RaiseBug();         } AssignBug.cs 和 ResolveBug.cs 有上述相似的代码。   2. 为项目文件添加对Security Application Block程序集的引用。 Microsoft.Practices.EnterpriseLibrary.Security.dll   3. 打开Security \ SecurityHelper.cs代码文件,添加如下命名空间的引用。 using Microsoft.Practices.EnterpriseLibrary.Security;   4. 添加如下代码到Authorized方法。         public static bool Authorized(string rule)         {             bool authorized = false;               // TODO: Check rule-base authorization             IAuthorizationProvider ruleProvider;             ruleProvider = AuthorizationFactory.GetAuthorizationProvider();               authorized = ruleProvider.Authorize(Thread.CurrentPrincipal, rule);               return authorized;         }   上述代码使用AuthorizationFactory 检索默认的authorization provider,授权提供者将依据规则,测试当前的principal( role和identity)是否授权。   5. 运行应用程序,分别以不同的用户Tom / Dick / Harry登录,验证不同的用户是否分配了不同的权限。 http://www.entlib.com专业ASP.NET电子商务平台小组,欢迎你继续访问Security  Application Block学习手册。   参考文档: Security Application Block Hands-On Labs for Enterprise Library

转载于:https://www.cnblogs.com/vibratea/archive/2010/09/15/1826720.html

相关资源:各显卡算力对照表!

最新回复(0)