【问题标题】:forward html header parameter to jsf back bean将 html 标头参数转发到 jsf 返回 bean
【发布时间】:2011-10-11 15:25:20
【问题描述】:

我有两台服务器 一个仅用于身份验证并在标头参数中使用 userId 转发请求 其他服务器在 JSF (1.2) 上运行应用程序。 如何从请求中检索参数并放入支持 bean。

【问题讨论】:

  • 您混淆了“请求标头”和“请求参数”这两个术语,因此您的问题模棱两可且令人困惑。请编辑并明确指定“请求标头”或“请求参数”。请求标头是 HTTP 标头字段中的任何内容(在 URL 中不可见)。请求参数是 ? 部分之后的请求 URL 中的任何内容。此外,从服务器 X 到服务器 Y 的“转发”是不可能的。您可能在这里指的是“重定向”。考虑到这一点,不可能让浏览器在发送重定向时添加另一个请求标头。那么,您真正拥有和需要做什么?
  • 详细说明您如何准确地调用其他服务器的代码示例将有助于理解您真正拥有和正在做什么。您是在使用例如 URLConnection 还是某些特定的 API?
  • 我看了你的文章Communication in JSF,很有意思。我的问题开始于:我是一个 spring struts 用户并且是 JSF 的新手。管理员告诉我的是,userId 将位于请求的 http 标头中,该标头将登陆我的应用程序起始页。我需要从请求中提取信息并放入我将在整个会话中使用的支持 bean。在开始编码之前,我想了解一下。
  • 啊对了,根本不是你自己转发的,你只需要检查传入的请求头。在这种情况下,枫叶的回答完全没问题。您只需要确定使用了什么请求标头名称,以便您可以在 map 的 get() 方法中使用它。
  • @BalusC 我认为 OP 的意思是他的 JSF 应用程序服务器位于代理服务器后面,该代理服务器自动将信息输入到请求标头中。

标签: java jsf http-headers


【解决方案1】:

我为单点登录身份验证模块做了类似的事情。代理服务器将用户名插入 HTTP 请求标头。这可以从FacesContext 中检索,如下所示:

Map<String, String> requestHeaders = context.getExternalContext().getRequestHeaderMap();
String userName = requestHeaders.get(requestHeaderName);

【讨论】:

  • 非常感谢。这件事听起来很鼓舞人心,但我有一个问题。 jsf 如何将此转发给支持 bean?或者只是在支持 bean 中执行此操作会自动拾取它?
  • 只要其他服务器总是添加此请求标头并转发到 JSF 应用程序,那么在支持 bean 中添加此代码应该会自动获取它。
  • 感谢您的回复。我是 JSF 的新手。上下文不是对所有会话开放吗?我将尝试它并将其发送以进行部署和测试,看看它是如何工作的。一旦我得到任何积极的结果,我会更新。
  • 静态获取当前实例即可。只要您在 JSF 上下文中,它就一直存在(即您在某个在 JSF 请求期间执行的方法中)。
猜你喜欢
  • 2012-05-13
  • 1970-01-01
  • 1970-01-01
  • 2012-07-23
  • 2014-10-15
  • 2018-01-24
  • 1970-01-01
  • 1970-01-01
  • 2013-08-20
相关资源
最近更新 更多