簡體   English   中英

為什么我使用“ request.getPrincipal()”來獲取經過身份驗證的用戶?

[英]Why I'm using “request.getPrincipal()” to get the authenticated user?

這可能是一些“菜鳥”問題,但我在研究過程中找不到直接答案。

在使用JAVA Web項目(利用SSO)的情況下,有一些庫通過以下方式獲取登錄用戶:“ request.getUserPrincipal();”。

接收到此請求的數據令我感到震驚,因為這可能是強加的(我的第一個假設是請求來自Webclient /瀏覽器)。

但是檢查運行中的應用程序后,我看不到數據在請求中傳輸的位置(除了登錄頁面本身之外,當然還發送用戶名和密碼)。

因此,我假設服務器正在擴展請求,並將實際存儲在會話中的用戶信息放入(這是安全的),但是我找不到任何支持我的理論的清晰文檔。

因此,有人可以向我解釋或指出一些很好而直接的解釋嗎?

謝謝! 問候。

HttpServletRequest#getUserPrincipal() JavaDoc說:

返回一個java.security.Principal對象,其中包含當前經過身份驗證的用戶的名稱。 如果用戶尚未通過身份驗證,則該方法返回null。

沒錯,它沒有直接說明此信息的來源。 實際上,身份驗證和相應的Principal對象可能來自不同的來源。

文檔定義了一個合同,如果存在當前身份驗證,則返回對象;如果不存在身份驗證,則返回null

通常,這可以與會話結合使用,但是很容易擁有不使用HttpSession但基於例如每個HTTP請求中都存在JWT令牌的SSO實現。

暫無
暫無

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

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