3

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

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

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

喜欢:

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

3 回答 3

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)中定义这些拦截内容,但只需使用谷歌搜索即可轻松完成。

从这些链接开始:

于 2013-06-11T13:40:47.880 回答
0

注释不包含代码,也不会被神奇地处理。它们只是定义元数据,因此您需要某种引擎来处理注释并执行访问验证。

有很多框架和工具可以做到这一点。例如,您可以使用 AspectJ、Spring 框架和 Java EE 支持类似的注释来实现这一点。

您也可以使用动态代理、字节码工程或其他技术自己实现此逻辑。

所以,请更好地解释你正在实施什么样的应用程序,我们可能会给你更好的建议。

于 2013-06-11T13:32:18.357 回答
0

这似乎是Spring Security的Method Security的一个很好的案例。

于 2013-06-11T13:32:28.507 回答