码迷,mamicode.com
首页 > 其他好文 > 详细

控制方法只有相应权限才可执行

时间:2014-06-23 06:15:19      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:style   class   blog   code   color   com   

有时我们需要在调用一个方法前加判断,比如当前用户是否有权限来调用此方法。

常规做法在NET中是自己做一个Attribute来完成,不过在4.5中有System.Security.Permissions.PrincipalPermissionAttribute可以协助我们,用的是System.Security.Claims.ClaimSystem.Security.Claims.ClaimTypes

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Security.Claims;
 4 using System.Security.Permissions;
 5 using System.Threading;
 6 
 7 namespace ApiSecurityTest
 8 {
 9     class Program
10     {
11         static void Main(string[] args)
12         {
13             var claims = new List<Claim>()
14             {
15                 new Claim(ClaimTypes.Name, "badri"),
16                 new Claim(ClaimTypes.Email, "badri@nowhere.com"),
17                 new Claim(ClaimTypes.Role, "StoreMandager"),
18                 new Claim(ClaimTypes.Role, "BackOfficeClerk")
19             };
20 
21             var id = new ClaimsIdentity(claims, "Dummy"); // Non-empty string is needed as authentication type
22             var principal = new ClaimsPrincipal(new[] { id });
23             Thread.CurrentPrincipal = principal;
24 
25             MakeDiscount();
26 
27             Console.WriteLine();
28             Console.ReadLine();
29         }
30 
31         [PrincipalPermission(SecurityAction.Demand, Role = "StoreManager")] // Declarative
32         private static void MakeDiscount()
33         {
34             try
35             {
36                 Console.WriteLine(Thread.CurrentPrincipal.IsInRole("StoreManager"));
37                 Console.WriteLine("Discount of 10% has been applied");
38             }
39             catch
40             {
41                 Console.WriteLine("no access");
42             }
43         }
44     }
45 }

这样只有当StoreManager的人才能调用此方法,如果不是此类用户就会报SecurityException。

除上述特性外,还有KeyContainerPermissionAttribute,看程序是基于哪种做权限处理。

 

控制方法只有相应权限才可执行,布布扣,bubuko.com

控制方法只有相应权限才可执行

标签:style   class   blog   code   color   com   

原文地址:http://www.cnblogs.com/xwang/p/3799515.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!