linux 用户有哪三种权限,权限类_权限管理器_linux没类用户三种权限

所有权限对象都必须实现 IPermission 接口。从 CodeAccessPermission 类继承是创建自定义权限最容易的方式,因为 CodeAccessPermission 实现了 IPermission 并且提供了权限所需的多数方法。另外,必须为所有自定义代码访问权限实现 IUnrestrictedPermission 接口。强制性和声明式安全支持都需要自定义权限类,所以,即使您计划只使用声明式安全性,也应当创建自定义权限类。

若要从 CodeAccessPermission 类进行派生,必须重写下面的五个关键方法并提供自己的实现:

Copy 创建当前权限对象的副本。

Intersect 返回当前类与传递的类所允许权限的交集。

如果传递的权限包括当前权限允许的一切操作,则 IsSubsetOf 返回 true。

FromXml 对您的自定义权限的 XML 表示形式进行解码。

ToXml 对您的自定义权限的 XML 表示形式进行编码。

Union 创建一个权限,该权限是当前权限与指定权限的并集。

IUnrestrictedPermission 接口要求您重写并实现一个名为 IsUnrestrictedPermission 的方法。权限类为了支持 IUnrestrictedPermission 接口,您必须实现某些系统(如表示当前对象中的限制状态的布尔值),以定义权限的当前实例是否为无限制的。

下面的代码段阐释可用来定义自定义权限类的方式。接受 PermissionState 枚举的构造函数和名为 unrestricted 的布尔值均已创建。PermissionState 枚举的值可以是 Unrestricted 或 None。如果传递的枚举的值为 Unrestricted,则构造函数将 unrestricted 设置为 true。否则 unrestricted 将设置为 false。除特定于您的自定义权限的构造函数外,所有的代码访问权限(从 CodeAccessPermission 继承的所有权限)都必须支持只采用 PermissionState 枚举的构造函数。

除下面的示例中所示的代码外,您还必须实现 IsUnrestricted 方法,并重写 Copy、Intersect、IsSubsetOf、ToXML 和 FromXML 方法。有关完成这些步骤的信息,请参见示例后面的部分。

注意,该类由 SerializableAttribute 标记。必须使用 SerializableAttribute 标记您的类,才能支持使用属性的声明式语法。有关创建使用自定义安全对象的自定义属性的信息,请参见添加声明式安全支持。

IUnrestrictedPermission 接口需要 IsUnrestricted 方法,该方法仅返回一个布尔值,该值指示该权限的当前实例对该权限保护的资源是否拥有无限制的访问权限。若要实现此方法,只要返回 unrestricted 值即可。

下面的代码示例实现 IsUnrestricted 方法。

CodeAccessPermission 类需要“复制”(Copy) 方法,该方法返回当前权限类的副本。

下面的代码阐释如何重写 Copy 方法。

所有权限都必须实现 Intersect 和 IsSubsetOf 方法。必须按下文所示实现这些操作的行为:

如果权限 Y 包括 X 允许的一切操作,则 X.IsSubsetOf(Y) 为 true。

X.Intersect(Y) 产生一个权限,该权限允许且只允许 X 和 Y 两个权限同时允许的所有操作。

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/jisuanjixue/article-38399-1.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值