接触CAS(一)
来源:互联网 发布:金蝶k3数据字典 下载 编辑:程序博客网 时间:2024/04/28 03:41
Author:水如烟
这几天接触CodeAccessPermission,目的是看看权限是如何控制的,结果是头越来越头,脑袋越来越紧,糊涂哪。
涉及的概念太多了。对于象我一样的只是玩玩看看编编程序的好事之徒来说,要短时间内消化它真的好难。所以只有在BLOG上置一个专题,慢慢的来领会它。
基于自己的理解,实现CAS,应该有三个地方需要着眼:
A、定义权限
B、目标标识
C、程序域部署
现在仅仅略知A、B的一些皮毛,C还没接触。
自定义代码访问权限,必须实现System.Security.CodeAccessPermission(CAP)。关于CAP,MicrosoftTechNET的一篇文章,《如何:创建自定义加密权限》说得很清楚。这里是它提供的一张图示,以下也重打它的说明(一个字一个字打,不复制粘贴):
图中EncryptionPermission是其文要实现的一个加解密权限。
实现CAP,通常只是实现图中所示的七个方法:Copy,Union,Interset,IsSubsetOf,IsUnrestricted,FromXml和ToXml。意义如下:
Copy,创建一个与当前权限实例完全相同的副本,并将其返回调用方。思考:调用方A是谁,A什么时候需要这个副本,A用这个副本做些什么事了。
Union,返回一个权限对象,该对象是在当前权限和提供的权限之间的并集结果。思考:这个“当前权限”和“提供权限”哪是哪哪。
Interset,返回一个权限对象,该对象是在当前权限和所提供的权限之间的交集结果。
IsSubsetOf,返回一个布尔值,以提示当前权限是否是所提供的权限的子集。如果是子集,则当前权限的每项状态都必定在目标权限中。
IsUnrestricted,如果权限实例处于不受限制状态,此方法返回True。
FromXml,ToXml,前者将XML格式转换为权限对象实例,后者将权限对象的实例转换为XML格式。用于支持序列化。如,当程序集元数据中存储安全性属性时,将使用这些方法。
上面方法中有关权限集合运算的,如子集,交集,并集,是基于“状态”枚举,这个“状态”枚举,一般是操作类型的枚举,如可读、可写、可删除,简单的就是:Read,Write,Delete。
还要表示出全无,全有,所以都需要No,All。要表示出来,能够按位运算,枚举类就需要标识<Flag>,同时也要给出各个状态值。
如:
<Flags>_
Public Enum FileAccessFlags
NoFlags = 0
Read = 1
Write = 2
Delete = 4
AllFlags = 7
End Enum
文件中常用到的操作权限,还有可读写,它是Read Or Write,可以补充为:
<Flags>_
Public Enum FileAccessFlags
NoFlags = 0
Read = 1
Write = 2
ReadWrite = 3
Delete = 4
AllFlags = 7
End Enum
定义权限有三个步骤,就是:定义操作枚举,实现CodeAccessPermission,实现CodeAccessSecurityAttribute。任何一个权限,内容类似,差别仅是状态枚举不一样,当然,名称也不一样。基于此,我就写了一个模板工具,只要给出名称和状态枚举值,就自动生成这三个文件。
- 接触CAS(一)
- 接触CAS(二)
- 接触CAS(三)
- SSO(一) cas搭建
- cas(一)
- CAS算法(一)
- CAS单点登出:一
- CAS研究(一)-CAS协议
- CAS学习笔记(一)--认识CAS
- CAS单点登录(一):CAS服务端
- cas系列(一)--cas单点登录基本原理
- CAS单点登录(一)---CAS介绍
- Struts 接触123 (一)
- 一:初次接触Git
- cas认证服务器(一)
- CAS学习笔记(一)
- 全面接触SQL语法一
- 全面接触SQL语法一
- 清除无法显示隐藏文件的病毒
- 熊猫烧香集体"自杀"新变种情人节爆发威胁大增
- 文件夹的完全控制权限赋给aspnet用户(ntfs,cacls)
- 腾讯QQ2007 beta1┊解决Windows Vista下QQ基本的兼容性问题┊纯净绿色特别版
- 我也要开始做一个博客了!
- 接触CAS(一)
- 2007年2月8日
- 年后要找第一份工作了
- XML 问题: 超越 DOM
- 一个用iframe遮盖select例子
- 曾经沧海难为水---物是人非的母校校园风光
- Ajax 简介
- 写给对前途迷茫的朋友:五句话定会改变你的人生
- "Ruby".say_hello