2010-02-22 85 views
4

我搜索瞭如何在JSF Web項目中進行用戶身份驗證的最佳方式。我發現this非常好的例子來自BalusC在stockoverflow(順便說一句謝謝BalusC)。但我不明白這個系統。JSF 2.0上的用戶身份驗證的最佳做法?

我寫了一個註冊頁面。註冊後,用戶進入我的數據庫。但是,我可以使用j_security_check從我的數據庫中檢查用戶?

在我的web項目中,我沒有用戶和非用戶的站點。當用戶進入時,他會看到更多選項,例如他可以發佈文本。我可以檢查這個嗎?我可以保存用戶類與用戶數據在登錄和檢查:

if(user != null){ 
<h:inputText value="User Only Text" id="text" /> 
} 

但我認爲這種方式不是很優雅。另外我的問題是什麼是使用戶登錄的最佳方式,並顯示有效用戶在網頁上比非用戶更多的選項。

謝謝你,對不起我的英語不好。

回答

3

但是我該如何使用j_security_check從我的數據庫中檢查用戶?

This article解釋瞭如何將基於HTTP FORM的身份驗證與Glassfish中的JDBC領域結合使用。

什麼是最好的方式使用戶登錄,並顯示有效的用戶在網頁上比非用戶更多的選項。

基本上,您需要檢查用戶是否有適當的角色來查看「選項」。看看ExternalContext#isUserInRole(String)

+0

謝謝,我會試試看。 – ThreeFingerMark

+0

@Pascal:你想談談什麼時候可以從基於容器的安全轉移到諸如shiro或其他替代方案?在這裏看到更多的重點問題:http://stackoverflow.com/questions/7782720/when-to-move-from-container-managed-security-to-alternatives-like-apache-shiro –

4

只需聲明user作爲會話作用域管理bean並使用組件的rendered屬性。

<h:inputText value="User Only Text" id="text" rendered="#{user != null}" /> 
+0

而我怎麼說,用戶類登錄後加載到會話範圍內? – ThreeFingerMark

+0

要麼使用'UserManager'會話Bean,而要使用'login()'方法和'user'屬性,以便使用'#{userManager.user!= null}',或者通過執行'externalContext.getSessionMap()。put (「user」,user)'在bean的登錄方法中。 – BalusC

+0

感謝您的詳細解答。我會試試這個。 – ThreeFingerMark