簡體   English   中英

如何使用 JDBCRealm 獲取登錄用戶的用戶名?

[英]How can I get the logged-in user's username using JDBCRealm?

我正在運行 Glassfish 3.0,並且正在實現 JDBCRealm 以進行登錄身份驗證。 用戶名和角色保存在名為 usertable 的表中。 身份驗證按預期工作。

但是現在的問題是當用戶登錄時,如何在應用程序中檢索登錄用戶的用戶名?

PS:我正在實現 JSF 頁面和托管 Bean

在 JSF 中,您可以使用ExternalContext object 檢索與請求關聯的當前 Principal,因此,當前 session,可以從FacesContext中檢索。 可以使用getUserPrincipal()方法從 ExternalContext 訪問與請求關聯的 Principal:

FacesContext.getCurrentInstance().getExternalContext().getUserPrincipal();

上述調用可以在 JSF 托管 bean 中完成。 您可以在 Principal object 上調用getName()方法,以字符串形式檢索用戶名稱。

請注意,如果您在身份驗證之前檢索 Principal,或者身份驗證方案不保護整個站點,則您可以獲得引用 Anonymous 用戶的Principal實例。

Request.getRemoteUser or Request.getUserPrincipal , independent of the realm you use for authentication, so if you use a File realm for testing and a JDBC realm for production it will work in both cases. 順便說一句,如果你使用 JDBCRealm 也可以看看FlexibleJDBCRealm

您的身份驗證方法應返回包含名稱的 java.security.Principal。

http://download.oracle.com/javase/1.4.2/docs/api/java/security/Principal.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM