练习2:在应用程序中使用基于角色的授权
通过该练习将学习使用AuthorizationProvider在应用程序中进行基于角色的授权。
第一步
打BugSmak.sln项目,默认的安装路径应该为C:\Program Files\Microsoft Enterprise Library January 2006\labs\cs\Security\exercises\ex02\begin,并编译。
第二步 企业库配置工具
1
.使用Enterprise Library配置工具配置应用程序,可以通过开始菜单打开该配置工具,选择所有程序| Microsoft patterns and practices | Enterprise Library | Enterprise Library Configuration,并打开App.config文件。或者直接在Visual Studio中使用该工具打开配置文件。
2
.在解决方案管理器中选中App.config文件,在View菜单或者在右键菜单中选择Open With…,将打开OpenWith对话框,单击Add按钮。
![](https://i-blog.csdnimg.cn/blog_migrate/5d42c8c722d4ee965cdf3500b4041b19.png)
![](https://i-blog.csdnimg.cn/blog_migrate/923f547e1b0b0e71d806776ba686020d.png)
4
.在Open With对话框中,选中Enterprise Library Configuration并单击OK按钮。
![](https://i-blog.csdnimg.cn/blog_migrate/26631c82e5b4a1e9631f069aa3764645.png)
第三步 使用企业库配置工具添加授权规则
1
.在应用程序上右击并选择New | Security Application Block。
![](https://i-blog.csdnimg.cn/blog_migrate/c6083505288b08319243ccdfc50f822d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/450d339663ce22cdbf9883ad58035164.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3abdbfcec9ff08f16cc5d3f1c5c34df2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a8b196c36d13c03ce632ebd65b03c295.png)
![](https://i-blog.csdnimg.cn/blog_migrate/48526a0156b2da7478ff73adf5f40216.png)
Rule Name = Raise Bug
Expression = R:Developer OR R:Employee OR R:Manager
![](https://i-blog.csdnimg.cn/blog_migrate/25b3035622631deef8cc389c8dd9df77.png)
7
.分别添加如下规则:
Rule Name
|
Expression
|
Raise Bug **
|
R:Developer OR R:Employee OR R:Manager
|
Assign Bug
|
R:Manager
|
Resolve Bug
|
R:Developer OR R:Manager
|
![](https://i-blog.csdnimg.cn/blog_migrate/7c50ba0b3594ee217955332684d2ee7a.png)
DefaultAuthorizationInstance = BugSmak Rules
![](https://i-blog.csdnimg.cn/blog_migrate/a5561e336b7094cdcc92bf586eb4787b.png)
第四步 添加基于授权的任务
1
.打开文件TaskForms \ RaiseBug.cs的源代码,添加如下代码:
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/34031c708bfe702fe82d01ff5c6593aa.gif)
![InBlock.gif](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
![InBlock.gif](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
![InBlock.gif](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
![InBlock.gif](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
![ExpandedSubBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/3112b7b6526db5bc83e275260ae60525.gif)
![InBlock.gif](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
![InBlock.gif](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
![InBlock.gif](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
![ExpandedSubBlockEnd.gif](https://i-blog.csdnimg.cn/blog_migrate/eec4c0236afc26744c9c4e910bc34958.gif)
![InBlock.gif](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
![InBlock.gif](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
![InBlock.gif](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
![ExpandedBlockEnd.gif](https://i-blog.csdnimg.cn/blog_migrate/4fd96b3cf02f4c7b5c8964ac8167f7af.gif)
其他两个窗体
AssignBug.cs和
ResolveBug.cs添加的代码类似。
2
.添加对如下程序集的引用。
Microsoft.Practices.EnterpriseLibrary.Security.dll
3
.打开文件Security \ SecurityHelper.cs,添加如下命名空间。
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
4
.在方法Authorized中添加如下代码。
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/34031c708bfe702fe82d01ff5c6593aa.gif)
![InBlock.gif](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
![InBlock.gif](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
![InBlock.gif](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
![InBlock.gif](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
![InBlock.gif](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
![InBlock.gif](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
![InBlock.gif](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
![InBlock.gif](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
![InBlock.gif](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
![InBlock.gif](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
![InBlock.gif](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
![InBlock.gif](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
![InBlock.gif](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
![ExpandedBlockEnd.gif](https://i-blog.csdnimg.cn/blog_migrate/4fd96b3cf02f4c7b5c8964ac8167f7af.gif)
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/f0cd6c7f9e7ae96feae062cb48f670f0.gif)
5 .运行应用程序,分别以Tom, Dick和Harry登录,测试他们的访问权限。
User
|
Task Access
|
Tom (Employee)
|
Raise New Bug
|
Dick (Developer)
|
Raise New Bug
Resolve Bug
|
Harry (Manager)
|
Raise New Bug
Resolve Bug
Assign Bug
|
6
.关闭应用程序。
更多Enterprise Library的文章请参考《Enterprise Library系列文章》
本文转自lihuijun51CTO博客,原文链接:
http://blog.51cto.com/terrylee/67644
,如需转载请自行联系原作者