将java类的访问限制为某些包

Pat*_*iks 5 java

我有一个Java课程,里面有一些机密信息,我不想提供给任何未经授权的课程.

我想在一些包中访问这个类(这个包中的类将使用机密信息),因此我的安全类应该可以在这些包中访问.

有什么方法可以检查方法的调用者是否是授权类的授权类?

我知道公共/私人/默认所有东西(所以请不要让我使用它),但这些在这里没用,因为我想在一些包(不是一个/同一个)中可以访问一个类.

Ken*_*ent 5

我觉得你的方向是错误的.这可能是一个设计问题.

安全要求是您的业务逻辑.您应该以某种方式实现安全策略,而不是依赖于Java语言级别的可见性修饰符或调用者包名称.因为如果你把罐子交给别人,无论如何他都可以进入你的"confidencial"课程.

而且,类是一种类型,一种抽象的东西.它不应包含"数据".确定有时conf信息被写为静态变量等.但是如果某些数据是敏感的,则不应该在课堂上写.它可以存储在数据库或加密文件中等等.一旦对敏感信息发出请求,您将检查已实施的安全策略(如果允许访问这些数据).

只是我的2cents


kos*_*tja 0

您可以使用代理模式,由Java 中的Proxy类实现- 它是专门为您的目的而设计的。

是一个操作方法。

编辑:据我所知,您不能对静态方法使用常规代理机制,因为代理和被代理类必须实现一个公共接口。但是,还有更高级的工具,可能会帮助您,例如javassist。不幸的是我自己对此并不熟悉。