控制方法只有相应权限才可执行
有时我们需要在调用一个方法前加判断,比如当前用户是否有权限来调用此方法。
常规做法在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, "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,看程序是基于哪种做权限处理。
转载于:https://www.cnblogs.com/xwang/p/3799515.html
控制方法只有相应权限才可执行相关推荐
- linux 可执行文件权限不够,root执行/media可执行文件权限不够,chmod修改权限无效...
问题: 我想执行media文件夹下自己写的某个程序,但无法执行? 1. 于是我以root的身份在终端以输入指令chmod a+x 1,回车后没反应,查询该文件夹的属性,也没有改变,即修改权限无效. 2 ...
- linux 权限 x 表示,在Linux系统中,用户对目录拥有“x”权限,表示可以执行下列哪种操作?...
在Linux系统中,用户对目录拥有"x"权限,表示可以执行下列哪种操作? 更多相关问题 通过花的中心只能作1个对称面称辐射对称花. 王叔和归纳了脉象( )种,规范了脉象名称. 车轮 ...
- 给脚本添加可执行权限,并执行脚本 转
给脚本添加可执行权限,并执行脚本 添加可执行权限 方式1:chmod +x test.sh. 或者 方式2chmod 755 test.sh 执行脚本 方式1:此时再双击test.sh文件就可以运行了 ...
- java进阶 线程池 join用法总结:thread4.join();方法,就表明thread4.join();这个线程受到贵客待遇,直到这个线程执行完,被插入这个方法的载体线程才可以执行。
那个线程调用join 举例 thread4.join();方法,就表明thread4.join();这个线程受到贵客待遇,直到这个线程执行完,被插入这个方法的载体线程才可以执行. package ja ...
- php 赋予最高权限,为PHP执行赋予root权限(一)
这几天弄的东西涉及到php利用shell脚本与Linux的交互,我们知道利用php运行脚本来访问Linux是以Apach的身份来执行的,因此它自己能够所做的事情很少的,因为没有足够的权限,这里就涉及到 ...
- win10你需要计算机管理员提供的权限才能操作,解决win10提示“你需要权限能才能执行此操作”的方案...
不知道大家在使用win10电脑的时候有没有遇到过这种情况,每次需要删除或是对某一文进行重命名的时候都会遇到系统提示:"你需要权限能才能执行此操作"!这样的操作在电脑系统中就需要使用 ...
- iOS 如何巧妙解决“一个任务需要等待另外一个任务完成后才可以执行”的问题
看到标题,我想大部分iOS开发的童鞋能想到好几种方案.比如下一个网络请求必须依赖上一个网络请求的结果才可以进行,最简单直白的方法是:"同步调用".这里所说的同步是指,等上一个网络请 ...
- js中的onclick事件在ul获取li时点击两次才会执行的原因
js中的onclick事件在ul获取li时点击两次才会执行的原因 下面的代码中 只有onclick第二次才会执行函数内部的代码 代码实例如下: <!DOCTYPE html> <ht ...
- python函数只有被调用才会执行_Python函数
1.函数的定义 python内置了很多函数,可以直接调用,多数情况下,还需要自定义函数,自定义函数的主体,换行的缩进表示代码属于该函数.定义的函数只有被调用的时候才会执行.函数只有有返回值的情况下才可 ...
- linux修改rc.local权限,Linux 7 的 rc.local 文件需要 添加 +x 权限才会自动执行
vmware 克隆的虚拟机添加的网关的没有生效,每次重启后都需要手工添加网关. 所以将添加命令写到/etc/rc.local 文件里了. https://www.cndba.cn/dave/artic ...
最新文章
- Linux下安装Weblogic10.3.6并创建简单集群测试
- Linux内核同步机制之(四):spin lock【转】
- 你是一个有价值的产品经理吗?
- k8s部署nacos集群:3个pod、连接外部mysql读写分离集群
- Win8.1部署 .NET Framework 3.5 安装方式
- Hyperledger Fabric学习笔记(二)- Fabric 2.2.1环境搭建
- Chapter 15 配置服务器存储和群集 第1课
- C# 自定义配置文件
- 从零开始学前端:定时器、Math对象 --- 今天你学习了吗?(JS:Day12)
- Android中Menu的基本用法
- [古怪问题] Marshal.GetActiveObject 在管理员模式下无法正常运行
- Last-Modify、ETag、Expires和Cache-Control(转载)
- cmosfixr插件怎么用_Excel处理临床数据:插件篇
- 企业微信邮箱可以移动办公吗?
- dfuse 加入 BGA 区块链游戏联盟
- 超出预算,他的处理的方式对吗? | 每天成就更大成功
- 2011年北邮各组组线
- 动物识别系统c语言编程,人工智能期末论文-简单动物识别系统的知识表示.doc
- Docker USER 指定当前用户
- 按键脚本c语言,按键精灵脚本(示例代码)
热门文章
- MySQL 编码相关小结
- PHP导航栏管理,zblog导航栏管理设置的几种方法
- 2021-1-30Linux学习纪要
- lgg8各个版本_LG正式推出G8SThinQ 搭载骁龙855
- python 几何计算_计算几何-凸包算法 Python实现与Matlab动画演示
- (day 19 - 动态规划)剑指 Offer 42. 连续子数组的最大和
- ftp文件服务器坑,Java实现FTP上传文件到Linux服务器的那些坑
- android 背景逐渐变暗,UI:使View背景逐渐变暗的方法
- php 是否存在,php判断常量是否存在
- java两个数最大公约数和最小公倍数_java中请给出例子程序:找出两个数的最大公约数和最小公倍数...