请教如何动态控制类的访问权限

java的主程序运行时可能要通过classloader加载不同的类完成不同的功能。而这些被加载类的执行权限都是根据他们的codesource由运行主程序时的-Djava.security.policy =policyfile 的policy文件定义的。我想问有没有方法在程序中动态的增加或删除某个被加载类的权限而屏蔽原来policy文件中定义的权限。谢谢赐教

了解一下JAAS吧。

jaas我理解的是限制用户的权限。用户使用的类可以在他的权限范围内完成工作,而我要解决的是如何限制某个类的权限。例如用户通过某个类读文件,即使用户有权限读某个文件,但是这个类没有权限,那么也不能读。

这个命题本身有矛盾:
1)人有权限,类没有权限--这个“人”会感觉很奇怪:“为什么~~~”
2)人没有权限,而类有权限--类的这个权限没用。

人的权限和类的权限在policy文件中都可以定义
grant principal,codebase
{
...............
}

可以考虑对编译后的class文件进行DES加密,然后重写一个classLoader对类进行解密,密钥在外部用xml文件或者properties文件来保存和配置,或者在调用main函数的时候传入。

还可以考虑在加载的时候使用你的classLoader进行setSigners();
然后在使用该class的对象的时候,再getClass().getSigners();
对其进行验证。