1

我们有一个使用基本 HTTP 身份验证的 Web 应用程序。

web.xml

...
<login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>file</realm-name>
</login-config>
...

在深层代码空间的某个地方间接使用......

User getLogedUser(HttpServletRequest request)

而且我必须在 JSF 2 中重写它,但我不知道如何在 JSF 2 中使用这种身份验证方法。(我找不到如何获得“HttpServletRequest 请求”的方法)

谷歌没有在他的首页上打出任何有用的信息

感谢您提前回答。

4

2 回答 2

1

我猜您正在寻找 返回用户名的ExternalContext.getRemoteUser() 。

用法:

FacesContext.getCurrentInstance().getExternalContext().getRemoteUser();
于 2012-08-07T17:58:18.170 回答
1

原始HttpServletRequest文件在 JSF 中,由ExternalContext#getRequest().

ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
HttpServletRequest request = (HttpServletRequest) ec.getRequest();
// ...

但是,我认为最好将getLoggedUser()方法更改为使用远程用户。

User getLoggedUser(String remoteUser)

这样你就可以喂它ExternalContext#getRemoteUser()或喂它HttpServletRequest#getRemoteUser()。这也将方法与任何 Servlet API 或 JSF API 依赖项分离。

于 2012-08-07T18:22:07.747 回答