您知道吗,是否有可能检查谁在调用方法并限制是否允许他们使用Java Annotations执行它?
例如,如果您有客户端和服务器。有几个用户,他们有不同的角色,他们登录到客户端。然后(具有不同用户的同一客户端)想要在服务器上调用getMethod。
我可以限制,允许谁使用Java Annotations调用此方法吗?
像:
@Role(role="AllowedRole")
public ReturnType getMethod() {
...
}
答案 0 :(得分:1)
好吧,我曾经在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),但是可以通过一点google搜索轻松完成。
从这些链接开始:
答案 1 :(得分:0)
注释不包含代码,也不会神奇地处理。它们只是定义元数据,因此您需要某种处理注释并执行访问验证的引擎。
有很多框架和工具可以做到这一点。例如,您可以使用AspectJ,Spring框架和Java EE支持类似的注释来实现这一点。
您也可以使用动态代理,字节码工程或其他技术自行实现此逻辑。
因此,请更好地解释您正在实施哪种应用程序,我们可以为您提供更好的建议。
答案 2 :(得分:0)
对Method Security的Spring Security来说,这似乎是个好例子。