使用Java Annotations限制Method的执行

时间:2013-06-11 13:28:34

标签: java annotations client-server

您知道吗,是否有可能检查谁在调用方法并限制是否允许他们使用Java Annotations执行它?

例如,如果您有客户端和服务器。有几个用户,他们有不同的角色,他们登录到客户端。然后(具有不同用户的同一客户端)想要在服务器上调用getMethod。

我可以限制,允许谁使用Java Annotations调用此方法吗?

像:

@Role(role="AllowedRole")
public ReturnType getMethod() {
   ...
}

3 个答案:

答案 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 SecuritySpring Security来说,这似乎是个好例子。