2012-08-07 221 views
1

我們有一個使用基本HTTP身份驗證的Web應用程序。JSF 2和基本HTTP身份驗證

的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請求'的方式)

谷歌沒有在他的第一頁上發現有用的命中

感謝您提前給出答案。

回答

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依賴關係中分離出來。

+0

非常感謝您的快速回復! – cscsaba 2012-08-08 07:52:00

1

我想你正在尋找ExternalContext.getRemoteUser() 它返回用戶名。

用法:

FacesContext.getCurrentInstance().getExternalContext().getRemoteUser(); 
+0

非常感謝您的快速回復! – cscsaba 2012-08-08 07:56:48