java - 我可以从客户端检测当前用户有权使用哪些 EJB 吗?

标签 java jakarta-ee jboss ejb security-roles

我在 J2EE 服务器上有各种 EJB,具有不同的安全角色。

现在,在 Java Swing 客户端应用程序中,当我将用户登录到服务器时,我想发现用户可以访问哪些 EJB,而无需实际尝试创建或调用它们。

我想要这样做的原因是根据可用的 EJB 来调整用户界面。

例如,如果当前用户可以使用“AdministerMetadata”EJB,我想显示一个用于管理元数据等的菜单选项。

我可以接受从客户端内已知 EJB 的预定义列表进行查询,因此我不需要它完全动态。

我不想创建一个特殊的 EJB 来仅返回此访问信息,并且我希望避免必须尝试调用方法并捕获异常来进行发现。

我计划在 JBoss 上使用该解决方案,但如果可能的话更喜欢标准解决方案。

这可能吗?如果是这样怎么办?

最佳答案

据我所知,J2EE 中没有任何内容可以在客户端为您提供此信息。即使在服务器端EJBContext只会为您提供调用者拥有的角色以及调用者的主体(例如登录名)。

我认为除了拥有一个额外的 session Bean 之外别无他法,您可以在客户端查询该 session Bean,并检查服务器端的 EJBContext 以告诉客户端当前用户拥有哪些角色。

关于java - 我可以从客户端检测当前用户有权使用哪些 EJB 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/706856/

相关文章:

java - JTable.clearSelection() 与 Jtable.getSelectionModel.clearSelection() - 何时使用什么?

spring - 缓存最佳实践 java

tcp - Java 调试线协议(protocol)远程代码执行漏洞 - joss

maven - 如何为我的存储库管理器正确配置 jboss 存储库

java - hibernate 中缺少@Temporal 注释

apache - 从用户启动 Tomcat

java - 这个java函数有什么作用呢?

c# - C# Monitor.Wait() 是否遭受虚假唤醒?

Java 顶级枚举 - 父类(super class)型

java - Spring PROPAGATION_SUPPORTS 事务只读,你需要提交吗?