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

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

常规做法在NET中是自己做一个Attribute来完成,不过在4.5中有System.Security.Permissions.PrincipalPermissionAttribute可以协助我们,用的是System.Security.Claims.Claim及System.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, "[email protected]"),
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

时间: 2024-08-10 02:09:55

控制方法只有相应权限才可执行的相关文章

二、shell文件权限和脚本执行

一.认识权限和用户管理 1.查看权限 权限类型: 1.r 读 2.w 写 3.x 可执行 Linux用户 1.所有者(u) 2.所属组(g) (所有者及所有者所在组的全部用户) 3.其他用户(o)(其他组的所有用户(包括文件所有者)) 4.所有用户(a) 文件权限解读 文件类型 所有者权限  所属组权限  其他用户权限            所有者  用户所在的组  文件大小  创建时间  文件名 [[email protected] ~]# ll 总用量 100 -rw-------. 1 r

PyQt4转换ui为py文件需添加如下代码才可执行

1)转换ui为py 命令行进入ui文件所在文件夹,输入pyuic4 ui_name.ui > py_name.py即可 或新建ui2py.bat文件,写入: @echo off @cd /d "%~dp0" pyuic4 %1 > %~n1.py 将ui文件拖入批处理即可,生成在ui文件所在目录,文件名为py_name.py 2)转换后的py文件还不能运行,需要可视化操作才可运行 具体见帖:http://www.cnblogs.com/doudongchun/p/36947

C# 将后台数据 写到前台脚本中去【控制页面中某些脚本只在 页面第一次加载的时候才去 执行】

protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { this.domainBind(); Page.RegisterClientScriptBlock("F1", "<script>var c=1</script>"); } else { Page.RegisterClientScriptBlock("F0", &qu

C#使用管理员权限打开cmd执行命令行

最近遇到个棘手的问题,服务器远程连不上,但是ftp可以,可能远程连接的服务挂了或者防火墙入站规则有点问题,想要重启,得找机房工作人员,还是挺麻烦的 想了想可以上传个执行cmd命令的东西,然后远程访问触发,执行命令添加一条入站规则,但是呢一般的命令行又不够权限,只能以管理员权限打开才能执行这个 命令,往入站规则里面先添加一条规则:[netsh advfirewall firewall add rule name=\"allow 24897\" protocol=TCP dir=in lo

02. Shell文件权限和脚本执行(更改权限)

Linux 有三种权限更改方式:chmod/acl/sudo 前两者用来更改文件权限,sudo用来更应用程序或者是命令的执行权限 chmod的局限是无法实现多种权限分配(用户群体只有三种),面对多权限时需要用ACL进行设置 Chmod chmod (agou)(+-)(rwx) filename agou 表示文件权限更改影响的范围,分别代表all, group, others, user +-表示增加或者删除权限 rwx表示具体的权限类型 chmod a+x test.txt 表示给test.

Hadoop权限认证的执行流程

Hadoop分布式文件系统实现了一个和POSIX系统类似的文件和目录的权限模型.每个文件和目录有一个所有者(owner)和一个组(group).文件或目录对其所有者.同组的其他用户以及所有其他用户分别有着不同的权限.对文件而言,当读取这个文件时需要有r权限,当写入或者追加到文件时需要有w权限.对目录而言,当列出目录内容时需要具有r权限,当新建或删除子文件或子目录时需要有w权限,当访问目录的子节点时需要有x权限.每个访问HDFS的用户进程的标识分为两个部分,分别是用户名和组名列表.每次用户进程访问

js中为什么非要alert一下下一步才会执行

多数原因为界面ajax中动态添加的元素还没被添加上,就执行了js函数(js函数要调用动态元素),解决办法:ajax方法中添加 async:false,同步,作用为,在ajax执行完毕后才执行之后的js.

Android如果有一个任意写入的漏洞,如何将写权限转成执行权限

这个题目我以为是考的怎么进行提权,结果原来是这样的: 1. DexClassLoader 动态载入应用可写入的 dex 可执行文件 2. java.lang.Runtime.exec 方法执行应用可写入的 elf 文件 3. System.load 和 System.loadLibrary 动态载入应用可写入的 elf 共享对象 4. 本地代码使用 system.popen 等类似函数执行应用可写入的 elf 文件 5. 本地代码使用 dlopen 载入应用可写入的 elf 共享对象 6. 利用

shell文件权限和脚本执行

一.权限管理 1.查看文件属性 ls -l 2.权限类型 二.linux用户与权限 1.用户管理 ①查看用户 id user1 ②添加用户 useradd user1 ③删除用户 userdel -r user1 1.用户组 ①新建组 groupadd g1 ②删除组 groupdel g1 ③把用户加入组 gpasswd -a user1 g1 ④把组中的用户删除 gpasswd -d user1 g1 3.权限分配 sudo 三.用户与文件的关系-权限 1.chmod权限分配 ①chmod