假定我们已知晓了 userName 以及它所属于的 roles,那么可以这样来设置当前线程的 Principal:
1GenericIdentity genIdent = new GenericIdentity(userName);
2GenericPrincipal genPrin = new GenericPrincipal(genIdent, roles);
3Thread.CurrentPrincipal = genPrin;
4
随后我们有三种办法来进行用户角色验证。
第一种方法是使用 GenericPrincipal.IsInRole 方法:
1GenericPrincipal currentPrin = Thread.CurrentPrincipal as GenericPrincipal;
2
3if (currentPrin != null && currentPrin.IsInRole("Manager"))
4{
5 //略
6}
7
第二种方法则是使用 PrincipalPermission 类,类似于权限设定中的强制方式:
1PrincipalPermission prinPerm = new PrincipalPermission(null, "Manager");
2
3try
4{
5 prinPerm.Demand();
6
7 //do something
8}
9catch
10{
11 //error handling
12}
第三种方式则类似于权限设定中的声明方式:
1private void DecPermButton_Click(object sender, System.EventArgs e)
2{
3 try
4 {
5 performManagerAction();
6 // do something
7 }
8 catch
9 {
10 // error handling
11 }
12}
13
14[PrincipalPermission(SecurityAction.Demand, Role="Manager")]
15void performManagerAction()
16{
17}
关于安全的另一个重要内容是加密。今天没空写了,改天再说。
| 对此文章发表了评论 |

