如何调用Backing Bean方法从Incoming请求获取请求Header值并将结果转发到JSF页面

时间:2011-10-18 15:55:53

标签: jsf-2 http-headers authentication

我的要求是“我们的用户使用SSO通过外部系统进行身份验证”。 在成功验证后,外部系统返回标头变量即。用户身份, firstName,lastName等到我们的系统。 目前我能够使用检索这些标头变量 我的JSP页面中的request.getHeader(“userId”)。

但我使用的是JSF 2.0,并且无法弄清楚如何在JSF中完成此操作。我在Stack overflow上看到了一个例子......

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

但是没有进一步的响应,因为它将如何在辅助bean上调用。

任何指针或示例代码都会有所帮助。

1 个答案:

答案 0 :(得分:0)

context只是the current instanceFacesContext。这是一个基于请求的threadlocal变量,它始终可用于由FacesServlet控制的所有JSF代码。

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

您可以在例如bean的构造函数,bean的@PostConstruct方法,bean的action(侦听器)方法等中调用它。正确的位置取决于您希望收集此信息的时刻以及您希望如何处理此信息。