java - 将附加参数从 JSF 传递到 EJB

标签 java security jsf jakarta-ee ejb

在我的 Java EE 6 应用程序(Weblogic 12c、EJB 3.1、JSF 2)中,我需要知道 EJB 中谁调用了该方法。

但是从 context.getCallerPrincipal().getName() 获取的调用者登录名还不够,因为登录名在我的应用程序中不是唯一的。我需要从 JSF 层传递附加参数(用户组织 id),但我不想更改每个方法的签名。

有没有办法在用户登录应用程序时(或者通常在 JSF 层)设置自定义参数,这些参数稍后对 EJB 可见?

最佳答案

有几个选项。

  1. 使用 JASPIC 将用户/调用者主体名称设置为用于登录的用户以外的其他名称。

例如,如果用户使用“joe”登录,则对于大多数内置模块,“joe”将是从 context.getCallerPrincipal().getName() 返回的内容。

使用 JASPIC,您可以将其设置为任何字符串,例如“joe.theboss::131::9634”。

  1. 使用 CDI 来记住请求范围内的某些内容。 EJB bean 可以使用请求范围的 CDI bean 进行注入(inject)(请小心使用 CDI @RequestScoped 而不是 JSF 版本)。

关于java - 将附加参数从 JSF 传递到 EJB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15569046/

相关文章:

android - 我可以在 Android 上使用最新的 BouncyCaSTLe 提供程序吗?

jsf 在数据表中重复

jsf - JavaServer Faces Bean 实例化顺序

java - 如何在javaFX中扩展 Accordion 的多个TitledPane?

asp.net - Azure ACS 身份验证如何确保安全?

java - 我的应用程序运行良好,但 TextView 不会显示

javascript - 在 IE 中打开时 Iframe 内的导航问题

java - JSF Phase Listener 重定向表单不是 iframe

java - 将 Java 抛出异常替换为自定义消息并继续

java - Postgres-错误 : prepared statement "S_1" already exists