java - 如何获取登录用户无状态bean

标签 java validation jakarta-ee stateless

我对如何验证登录用户感到困惑。我正在考虑从无状态 bean 调用有状态 bean,但我读了这个主题 access existing instance stateful inside stateless, java ee 6

这是我的想法。

ProductBean.java

@Stateless
@LocalBean
public class ProductBean {
    @EJB private UserBean userBean; // UserBean is SFSB
    public Product addProduct(Product product) {
        if(userBean == null || userBean.getLoggedInUser() == null) {
            // throw an exception
        }
        // persist 
    }
}

ProductController.java

@ManagedBean
@RequestScope
public class ProductController {
    @EJB private ProductBean productBean;
    private Product product;
    public void addProduct() {
        Object result = productBean.addProduct(productBean);
    }
}

提前谢谢您。 :)

最佳答案

如果您想保护您的 Bean,您应该使用 Java EE 安全机制,例如 @RolesAllowedsessionContext.getCallerPrincipal(),而不是创建您自己的机制。如果您在 Web 模块中进行正确的身份验证,安全上下文将传播到 EJB。

有状态 bean 并不是一个好主意,尤其是在您的设计中。您不能在无状态 Bean 中使用有状态 Bean,因为无状态 Bean 实例会在不同的调用/用户之间重用。

关于java - 如何获取登录用户无状态bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29426073/

相关文章:

validation - JSF Validator 与字符串的平等比较

ruby-on-rails - 在 Rails 中重构验证逻辑和正则表达式的最佳方法是什么?

java - 无法在jsp中加载图像?

java - 为什么在 Ubuntu 上尝试将 TomCat 安装添加到 NetBeans 时出现此错误消息(无法读取 CATALINA_HOME/conf/server.xml)?

javascript - 在不提交的情况下启动浏览器的验证和错误消息

java - 无法在 Eclipse Juno 中处理 URL

java - 为什么 HSSFWorkbook.write 在 HttpServletResponse 中不起作用

java - 如何定义可执行 jar 文件的正确类路径?

java - 在 Java 中,如何在不返回实例或数据副本的情况下访问属性?

java - 我需要 volatile 关键字吗? ( java )