你知道,是否有可能检查谁在调用一个方法并限制他们是否被允许使用 Java Annotations 执行它?
例如,如果您有一个客户端和一个服务器。有几个用户,他们有不同的角色,他们登录到客户端。然后(同一个客户端)与不同的用户想要在服务器上调用一个 getMethod 。
我可以限制谁可以使用 Java Annotations 调用此方法吗?
喜欢:
@Role(role="AllowedRole")
public ReturnType getMethod() {
...
}
你知道,是否有可能检查谁在调用一个方法并限制他们是否被允许使用 Java Annotations 执行它?
例如,如果您有一个客户端和一个服务器。有几个用户,他们有不同的角色,他们登录到客户端。然后(同一个客户端)与不同的用户想要在服务器上调用一个 getMethod 。
我可以限制谁可以使用 Java Annotations 调用此方法吗?
喜欢:
@Role(role="AllowedRole")
public ReturnType getMethod() {
...
}
好吧,我曾经在 JBoss Server 中使用 Seam/DeltaSpike 来实现这一点。这很简单。
基本上,您有一个方法可以用您的注释进行注释。例如,我的是@User
:
public class MyClass {
@User
public Object getMethod() {
//implementation
}
}
接下来,您需要一个定义如何检查注释的类:
public class Restrictions {
@Secures @User
public boolean isOk(Identity identity) {
if (identity.getUsername("Peter")) {
return true;
}
return false;
}
}
而已!当然,您需要一些库并在某些 xml 文件(如 beans.xml)中定义这些拦截内容,但只需使用谷歌搜索即可轻松完成。
从这些链接开始:
注释不包含代码,也不会被神奇地处理。它们只是定义元数据,因此您需要某种引擎来处理注释并执行访问验证。
有很多框架和工具可以做到这一点。例如,您可以使用 AspectJ、Spring 框架和 Java EE 支持类似的注释来实现这一点。
您也可以使用动态代理、字节码工程或其他技术自己实现此逻辑。
所以,请更好地解释你正在实施什么样的应用程序,我们可能会给你更好的建议。
这似乎是Spring Security的Method Security的一个很好的案例。