我該怎麼知道getDetails()
,getPrincipal()
等回報SecurityContextHolder.getContext().getAuthentication()
?該類型是對象,我無法理解文檔中寫的是什麼。春季安全驗證對象的方法
0
A
回答
0
這個怎麼樣? (假設getPrincipal()
沒有返回null
)
String className = SecurityContextHolder.getContext().getAuthentication().getPrincipal().getClass().getName();
它應該返回附有包名的類名,即完全合格的類名。我認爲這個類型會實現java.security.Principal
(某些彈簧專用的類)。所以,你可以做到以下幾點:
Principal p = (Principal) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
0
getDetails()
返回一個包含用戶的IP地址和會話ID(雖然我懷疑這可能取決於應用程序的類型WebAuthenticationDetails對象;因爲getPrincipal()
同樣是相關的,它突出原因getDetails()
也可能以類似的方式變化)。
getPrincipal()
返回一個對象,這取決於您如何管理身份驗證。例如,使用LDAP身份驗證,getPrincipal()
方法將返回一個LdapUserDetailsImpl對象。
如果您需要訪問的用戶/主體信息,我會建立一個自定義的UserDetails類,並存儲/檢索有所需的信息,但你可以很容易地使用getPrincipal()
和getDetails()
提供你施放它們作爲符合條件的課程,或者擴展他們自然返回的課程(並按照您的喜好管理它們)。
我覺得有些有趣的是,getPrincipal()
方法實際上並不返回一個Principal對象(也不能將LdapUserDetailsImpl對象轉換爲Principal對象)。
相關問題
- 1. 春季安全ldap驗證
- 2. 模擬對象的身份驗證在春季安全
- 3. 春季安全上下文集驗證對象不起作用
- 4. 春季安全 - 基本身份驗證
- 5. 春季安全密碼驗證
- 6. LDAP身份驗證春季安全2.0.3
- 7. 手動驗證春季安全
- 8. 春季安全 - 自定義LDAP驗證
- 9. 春季安全檢索主體對象
- 10. 春季安全
- 11. 春季安全
- 12. 春季安全,方法安全,URL安全
- 13. 春季安全getPrincipal()方法返回anonymousUser
- 14. 春季安全 - 成功身份驗證後無法訪問
- 15. 啓用春季方法驗證
- 16. 春季安全中的客戶端證書身份驗證
- 17. 春季安全 - 的sessionId是認證
- 18. 春季開機+春季安全:如何取消基本身份驗證表格
- 19. Vaadin春季安全
- 20. 在春季安全
- 21. 春季安全mysuccessHandler
- 22. BCryptPasswordEncoder春季安全
- 23. 與春季安全
- 24. AccessDeniedException;春季安全
- 25. 春季安全badcredentials
- 26. 春季3.5安全
- 27. 從春季安全
- 28. 春季安全自定義消息「驗證方法不支持:GET」
- 29. 春季安全春季啓動4.x
- 30. 春季組驗證