2010-03-21 38 views
3

我有一個運行在具有EJB 3後端的glassfish 2.1上的JSF應用程序。對於身份驗證,我使用自定義領域。用戶使用他在註冊時指定的電子郵件地址和密碼進行身份驗證。一切工作都很好。如何在JSF中處理動態角色或用戶名更改?

現在我有兩個相關的問題:

1)用戶可以編輯自己的個人資料和 - 自然 - 他也可以改變他的電子郵件地址。不幸的是,當我使用ExternalContext.getUserPrincipal()。getName()根據當前用戶的身份執行操作時,我將收到用戶在登錄時使用的以前的電子郵件地址。目前,我通過強制用戶在更改其電子郵件地址後重新進行驗證來處理此問題,但還有其他更優雅的可能性嗎?

2)用戶角色相同。例如。我有用戶角色MEMBER和PREMIUM_MEMBER。會員在他本屆會議期間可能會成爲PREMIUM_MEMBER。不幸的是,這個角色似乎只在登錄時才被確定。有沒有可能讓JSF和EJB識別新的用戶角色,而不需要用戶重新進行身份驗證?

+0

只要你需要一些動態的東西,JEE安全模型就會吸引你。也許這個問題將有助於「Java EE服務器上的動態角色」http://stackoverflow.com/questions/2230717/dynamic-roles-on-a-java-ee-server/2231079#2231079。我不認爲點2)是可能的。 – ewernli 2010-03-23 07:54:04

+0

我創建了https://java.net/jira/browse/JASPIC_SPEC-22來支持這個問題。希望這可以在未來版本的Java EE中解決。 – 2013-05-04 18:37:24

回答

1

考慮在JSF中使用Seam。在那裏,您可以更改登錄的用戶憑證,而無需重新登錄。

+0

1)你有沒有指向Seam文檔的鏈接? 2)Seam是否會向我的應用程序引入全新的授權/身份驗證框架,還是會提供JEE授權/驗證之上的動態功能? – sven 2010-03-24 09:15:08

+0

它使用JEE頂部的功能。沒有描述您可以更改登錄用戶憑據的文檔。不過,這裏有一些關於認證的文檔:http://docs.jboss.org/seam/2.2.1.CR1/reference/en-US/html_single/#d0e8712 雖然安全章節是一個很好的開始: http://docs.jboss.org/seam/2.2.1.CR1/reference/en-US/html_single/#security 當涉及到有關角色的第二個問題時,很可能需要重新登錄,儘管API可能支持更改改變用戶角色的事件。如果可能的話,我不會感到驚訝。 – 2010-03-24 10:31:27