java.lang.Object
java.security.Permission
- 所有已实现的接口:
-
Serializable,Guard
- 直接已知的子类:
-
AllPermission,BasicPermission,CardPermission,FilePermission,MBeanPermission,PrivateCredentialPermission,ServicePermission,SocketPermission,UnresolvedPermission,URLPermission
用于表示对系统资源访问的抽象类。所有权限都有一个名称(其解释取决于子类),以及用于定义特定权限子类语义的抽象函数。
大多数Permission对象还包括一个“actions”列表,该列表指示对象允许的操作。例如,对于java.io.FilePermission对象,权限名称是文件(或目录)的路径名,而操作列表(例如“read, write”)指定为指定文件(或指定目录中的文件)授予的操作。对于不需要此类列表的Permission对象(例如java.lang.RuntimePermission),操作列表是可选的;您要么具有命名权限(例如“system.exit”),要么没有。
每个子类必须实现的一个重要方法是implies方法,用于比较权限。基本上,“权限p1暗示权限p2”意味着如果授予权限p1,则自然授予权限p2。因此,这不是相等性测试,而更像是子集测试。
Permission对象类似于String对象,一旦创建后就无法更改。子类不应提供可以更改权限状态的方法一旦创建了权限。
- 自从:
- 1.2
- 参见:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidcheckGuard(Object object) 为权限实现守卫接口。abstract boolean检查两个Permission对象是否相等。abstract String返回操作作为String。final StringgetName()返回此Permission的名称。abstract inthashCode()返回此Permission对象的哈希码值。abstract booleanimplies(Permission permission) 检查指定权限的操作是否被此对象的操作“暗示”。为给定的Permission对象返回一个空的PermissionCollection,如果未定义,则返回null。toString()返回描述此Permission的字符串。
-
Constructor Details
-
Permission
用指定的名称构造权限。- 参数:
-
name- 正在创建的Permission对象的名称。
-
-
Method Details
-
checkGuard
为权限实现守卫接口。调用SecurityManager.checkPermission方法,将此权限对象作为要检查的权限传递。如果授予访问权限,则静默返回。否则,抛出SecurityException。- 指定者:
-
checkGuard在接口Guard - 参数:
-
object- 正在受保护的对象(当前被忽略)。 - 抛出:
-
SecurityException- 如果存在安全管理器且其checkPermission方法不允许访问。 - 参见:
-
implies
检查指定权限的操作是否被此对象的操作“暗示”。这必须由
Permission的子类实现,因为它们是唯一可以对Permission对象施加语义的对象。implies方法由AccessController用于确定请求的权限是否被已知在当前执行上下文中有效的另一个权限所暗示。- 参数:
-
permission- 要检查的权限。 - 返回:
-
如果指定的权限被此对象暗示,则返回
true,否则返回false。
-
equals
检查两个Permission对象是否相等。不要使用
equals方法做访问控制决策;使用implies方法。 -
hashCode
public abstract int hashCode()返回此Permission对象的哈希码值。Permission对象的hashCode行为要求如下:- 在Java应用程序的执行期间,如果在同一
Permission对象上多次调用hashCode方法,则hashCode方法必须始终一致地返回相同的整数。这个整数不需要在应用程序的一个执行到另一个执行之间保持一致。 - 如果两个
Permission对象根据equals方法相等,则在两个Permission对象上调用hashCode方法必须产生相同的整数结果。
- 在Java应用程序的执行期间,如果在同一
-
getName
返回此Permission的名称。例如,在java.io.FilePermission的情况下,名称将是路径名。- 返回:
-
此
Permission的名称。
-
getActions
返回操作作为String。这是抽象的,因此子类可以推迟创建String表示,直到需要为止。子类应始终以它们认为是它们的规范形式返回操作。例如,通过以下方式创建的两个FilePermission对象:perm1 = new FilePermission(p1,"read,write"); perm2 = new FilePermission(p2,"write,read");
当调用getActions方法时,两者都返回“read,write”。- 返回:
-
此
Permission的操作。
-
newPermissionCollection
为给定的Permission对象返回一个空的PermissionCollection,如果未定义,则返回null。类Permission的子类应该覆盖此方法,如果它们需要将其权限存储在特定的PermissionCollection对象中,以便在调用PermissionCollection.implies方法时提供正确的语义。如果返回null,则调用此方法的调用者可以自由地将此类型的权限存储在他们选择的任何PermissionCollection中(使用Hashtable的一个,使用Vector的一个等)。- 返回:
-
适用于此类型
Permission的新PermissionCollection对象,如果未定义,则返回null。
-
toString
返回描述此Permission的字符串。约定是以以下格式指定类名、权限名称和操作:'("ClassName" "name" "actions")',或者如果操作列表为null或空,则为'("ClassName" "name")'。
-