gpt4 book ai didi

java - Deltaspike 和@Stateless Bean

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:22:47 26 4
gpt4 key购买 nike

我想用 DeltaSpike-API 保护我的“无状态”EJb。

@Stateless
@Remote(UserServiceRemote.class)
public class UserService implements UserServiceRemote

在方法级别我有一个自定义注释“支持”

@Support
public void doSomething() {}

因此我写了一个自定义注解“@Support”:

@Retention(value = RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD })
@Documented
@SecurityBindingType
public @interface Support {

我的自定义授权器看起来像:

@Secures
@Support
public boolean doAdminCheck(Identity identity, IdentityManager identityManager, RelationshipManager relationshipManager)
throws Exception {
return hasRole(relationshipManager, identity.getAccount(), getRole(identityManager, "Support"));
}

在我的“beans.xml”文件中,我包括:

<interceptors>
<class>org.apache.deltaspike.security.impl.extension.SecurityInterceptor</class>
</interceptors>

但是在我登录我的应用程序并在每次远程调用时调用“doSomething”方法后,“支持”注释将被忽略,无论我是否有角色。

我做错了什么?感谢所有建议!!!

最佳答案

Ejb和CDI是两个不同的概念。无状态 session bean 和托管 CDI bean 由不同的容器管理。所以您不能在无状态 session bean 上使用 Deltaspike。如果您想使用 deltaspike 安全性,请改用命名 bean 并使用不同的远程处理策略。

关于java - Deltaspike 和@Stateless Bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26781257/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com