Permission

Permission 是 Java 中的一个权限类,用来表示对资源的访问权限。Permission 最重要的方法是 implies,方法签名如下:

public abstract boolean implies(Permission permission);

表示当前Permission对象 (this) 是否暗含了指定 Permission 对象(permission) 的权限。

Java 中给出一个经典实现:BasicPermission,它使用了传入的字符串作为权限的标志,并使用类似于相对路径的办法比较一个 Permission 是否暗含了另一个Permission 的权限。

举个例子说明其含义:

import java.security.BasicPermission;
import java.security.PermissionCollection;


public class TestBasicPermission {

	public TestBasicPermission() {
		// TODO Auto-generated constructor stub
	}
	
	public static void main(String[] args)
	{
		testPermission();
	}
	
	public static void testPermission()
	{
		MyPermission usaBp = new MyPermission("usa.*");	//全美国
		MyPermission chinaBp = new MyPermission("china.*");	//全中国
		MyPermission hubeiBp = new MyPermission("china.hubei.*"); //全湖北省
		MyPermission wuhanBp = new MyPermission("china.hubei.wuhan.*");	//全武汉市
		MyPermission wuchangBp = new MyPermission("china.hubei.wuhan.wuchang.*");	//全武昌区	
		
		System.out.println(chinaBp.implies(usaBp));	//false ,全美国并不暗含全中国
		System.out.println(hubeiBp.implies(wuchangBp));	//true ,全湖北暗含了全武昌
		System.out.println(hubeiBp.implies(chinaBp));	//false ,全湖北并不暗含全中国
		
		PermissionCollection bpc = usaBp.newPermissionCollection();
		bpc.add(chinaBp); 
		System.out.println(bpc.implies(hubeiBp));	//true , (全美国 | 全中国)暗含了全湖北
	}
}

//BasicPermission 是个虚类不能直接使用,故要先派生出一个具现类
class MyPermission extends BasicPermission
{
	public MyPermission(String name) {
		super(name);
		// TODO Auto-generated constructor stub
	}
	private static final long serialVersionUID = 1L;
}
从例子中,还可以看出,Java 对于权限还给出一个权限集合类:PermissionCollection,它是一组权限的并集,对任意给定的 Permission 进行测试权限,只要被这个集合中的任意一个 Permission 暗含即可。需要注意的是,该集合中只能是同种类型的 Permission

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值