首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 图形图象-> FLASH教程
.NET框架中基于角色的安全性(3)-.NET教程,.NET Framework
作者:网友供稿 点击:19
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
permissions对象
  
    作为.net安全性两个重要的分支,基于角色的安全性和代码访问安全都离不开一个重要的概念--权限(permissions)。在基于角色的安全性中,principalpermission类用来检查调用线程的用户身份;而在代码访问安全中,从codeaccesspermission派生的类则用来检查执行当前方法的所有线程各自的权限。
  
    权限对象通过已有的安全策略来说明操作是否被允许或拒绝。对于代码访问安全权限(不过这不适用于用户权限),.net clr提供了堆栈遍历机制来确定所有的调用堆栈帧是否具有应有的权限。需要注意的一点是,如果permission对象为null,那么我们可以将它和permissionstate.none视为等同的,说明没有提供任何权限。权限常用于下面这些场合:
  
    1、定义执行代码所需要的权限。
  
    2、系统的安全策略可以承认或拒绝代码请求的权限。
  
    3、代码通过demand方法来保证(要求)它调用的代码具有所需的权限。
  
    4、代码还可以使用assert,deny或permitonly方法来跳过安全堆栈检查机制。
  
    另外,我们还可以使用成组的权限,在permissionset类中我们就可以使用各种不同权限组集合。
  
    下面我们还是先来看看最常用到的principalpermission类,至于另外一个常用的codeaccesspermission类,稍后将会在代码访问安全的内容中详细介绍。
  
    作为principalpermission类实现的三个接口之一,ipermission接口在principalpermission类中有了举足轻重的作用。ipermission接口提供了以下方法:
  
    1、copy 创建并返回当前权限的相同副本。
  
    2、demand 如果调用堆栈上的内容不满足权限对象所指定的权限内容,则会在运行时引发securityexception。该方法可以让当前代码不会被其他的恶意代码所利用。
  
    3、intersect 创建并返回一个权限,该权限是当前权限和指定权限的交集。
  
    4、issubsetof 确定当前权限是否为指定权限的子集。
  
    5、union 创建一个权限,该权限是当前权限与指定权限的并集。
  
    在上面列出的方法中,demand方法是最常用也是最重要的方法。demand方法会对当前方法的所有调用者进行检查以确定它们是否有足够的权限访问以指定的方式访问特定的资源(通常的检查方式是从调用堆栈上最新的调用方法开始通过执行完全的堆栈遍历来满足安全条件,但堆栈遍历不是必须的,principalpermission.demand就没有进行堆栈遍历),如果检查失败的话,demand方法会抛出securityexception异常,只有没有任何异常抛出的情况下,demand方法才成功返回。
  
    下图显示的是ipermission接口的继承层次:
  
  [imghttp://myarticle.enet.com.cn/images/200407/1090981312024.gif[/img]
  
    接着我们来讨论principalpermission类,这里就需要我们前面所谈到principal对象了,在principalpermission类的实例执行demand方法时,实际上是在判断当前的principal对象是否匹配给定principalpermission对象,如果不匹配的话,就抛出securityexception。另外,demand方法还可以用来强行让principal对象的identity验证通过,以便能不抛出异常,进行正常的操作。
  
    下面的代码片断简要地说明了如何使用principalpermission对象:
  
  
  string user1 = "abbott";
  string role1 = "straightman";
  principalpermission principalperm1 =
  new principalpermission(user1, role1);
  string user2 = "costello";
  string role2 = "funnyman";
  principalpermission pp =
  new principalpermission(user2, role2);
  principalperm1.union(pp).demand();
  
    上面的代码说明了如何使用合并两个principalpermission对象,在合并之后,如果用户是straightman角色的abbott或是funnyman角色的costello,那么demand将会成功返回。
  
    以上就是基于角色的安全性中所需要用到的基础类和一些示例代码,希望大家能够从上面的内容中粗窥.net安全性的门堂,能更好的应用.net安全性来开发安全的程序。
文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·adodb.stream对象的方法/属性-ASP教程,数据库相关
·DataGrid - 导出Excel文件-.NET教程,数据库应用
·有滚动条、固定Header的ASP.Net DataGrid实现-ASP教程,数据库相关
·解决Windows 程序界面闪烁问题的一些经验-.NET教程,Windows开发
·C#数据访问类-.NET教程,C#语言
·jsp生成html--replace-JSP教程,Jsp/Servlet
·查询两个表中字段个数不同,名称不同的SQL语句-ASP教程,数据库相关
·【C#】输入汉字字符串索引拼音的首字母-.NET教程,C#语言
·使用SQLServer2005-.NET教程,Web Service开发
·Java语言中字符的处理-JSP教程,Java技巧及代码
最新文章
·flash中作毛笔写字动画效果_flash教程
·用dreamweaver制作网页时关于文字自动换行的小技巧_dreamweaver教程
·seo中十大影响链接权重的因素浅析_seo网站优化
·在windows vista系统下扩大“发送到”的范围_windows vista
·众多网站引入嵌入式广告 网络广告面临拐点_站长访谈
·王怀南:遍地都是黄金 宝宝树创新模式_站长访谈
·幻想着靠蓝海大赚是不可能的_站长心得
·谈谈做站与站长的站德问题_站长心得
·photoshop打造非主流效果—颓废诡异效果_photoshop教程
·google pagerank 技术解密 1_google推广
相关主题
  • .net框架集webclient类向wince平台上传文件(ftp方式)延迟15秒释疑_c#应用
  • .net框架下oracle到sql server迁移_asp.net技巧
  • .net框架2.0里的aspnet_compiler.exe_asp.net技巧
  • .NET框架中基于角色的安全性(2)-.NET教程,.NET Framework
  • .NET框架中基于角色的安全性(1)-.NET教程,.NET Framework
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭