2012-03-16 141 views
0

我需要創建一個具有登錄系統的webapp。 用戶應該對數據庫進行身份驗證。 我想保存在會話中的userrole - 還是有其他(更好)的方式嗎?Apache MyFaces 2.0身份驗證和授權

此外還有用戶訪問的區域。 訪客區, 用戶區, 管理員區。

現在的問題是。 如何輕鬆實現jsf2.0的授權? 我不想在每個網站上測試,如果用戶被允許訪問網站或不。

在web.xml或faces-config.xml中是否有配置來測試這些情況?

有人可以給我看教程或示例代碼嗎?

感謝和問候 veote

+0

對於哪個服務器? – 2012-03-16 13:34:06

+0

Websphere Application Server 8.0 – veote 2012-03-16 13:44:57

+0

「我不想在每個站點上測試,如果用戶被允許訪問站點或不。」你可以詳細說明'每個網站',你是否正在尋找多點網站的單點認證?或者你的意思是檢查每個網頁/鏈接? – 2012-03-16 13:59:52

回答

2

您還可以查看選項(Framewroks)

  1. Spring Security
  2. Apache Shiro
  3. Java EE Security Tutorial
  4. 作爲已經建議Application Server提供身份驗證/授權。
  5. 實現一個過濾器(用於認證定製土生土長邏輯/授權)

博客覆蓋ANA在JSF

  1. User session filter
  2. Access Control in JSF using a PhaseListener

希望這會有所幫助

+0

我不知道Apache Shiro,值得去嘗試一下嗎?特別是和Spring Security相比(如果你有兩種經驗的話) – 2012-03-16 15:13:59

+0

@PetrMensik我沒有嘗試過,但是在博客中看到過,有時在SO它肯定值得一試的人們使用它。 – 2012-03-16 17:00:45

+0

非常感謝,我認爲shiro是我想要的。我會嘗試這個 – veote 2012-03-19 07:18:10

0

你可以試試this方法,它使用的PhaseListener檢查,如果用戶有在RESTORE_VIEW階段訪問當前網站的權利。這是很容易實現它,它可以在不同的服務器之間移動(與領域相反)

+0

謝謝,這似乎很好。有沒有可能在web.xml/faces-config中配置其他方法? – veote 2012-03-16 13:54:49

+0

呃,不是那麼好。您可以指定受限制的頁面以及如何記錄用戶,但通常只能在領域內正常工作(並且有時很難將其全部設置並將它們連接在一起)。順便說一句,爲什麼你只想使用這些XML文件?似乎更清潔和易於使用經典的編程風格,而不是用XML來打擾自己 – 2012-03-16 14:01:16

+0

沒錯。我會嘗試這個,謝謝:) – veote 2012-03-16 14:02:24

0

我不熟悉Websphere,但由於它是符合Java EE 6的應用程序服務器,因此可以爲此創建JDBCRealm。請參閱Java EE 6 tutorial的本章。

+0

謝謝,但我對我來說這不是我想的最好的方式,因爲也許我想用ldap來更改db。 – veote 2012-03-16 13:53:23

+1

@veote我使用weblogic,但在領域中更改身份驗證提供程序並不難,您可以輕鬆切換技術。 – 2012-03-16 14:02:45

+0

如果你看看教程中的例子(和我的經驗),我同意gbagga切換不應該那麼複雜。 – 2012-03-16 14:04:55