我该怎么知道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. 春季安全 - 自定义LDAP验证
- 5. 手动验证春季安全
- 6. 春季安全检索主体对象
- 7. 春季安全
- 8. 春季安全 - 成功身份验证后无法访问
- 9. 春季开机+春季安全:如何取消基本身份验证表格
- 10. AccessDeniedException;春季安全
- 11. 春季安全badcredentials
- 12. Vaadin春季安全
- 13. BCryptPasswordEncoder春季安全
- 14. 春季3.5安全
- 15. 从春季安全
- 16. 春季安全春季启动4.x
- 17. 春季安全方法安全拦截器不拿起认证管理器
- 18. 春季安全,ssl ldap和无证书
- 19. 春季安全和认证提供
- 20. 春季安全HTTP基本认证
- 21. 春季安全预认证配置
- 22. 春季启动安全LDAP认证
- 23. 春季安全预认证/登录
- 24. WebSocket的身份验证与春季安全
- 25. 春季安全预授权的重新验证
- 26. 春季安全 - 无法找到春天NamespaceHandler - 安全
- 27. 春季安全的OAuth 2
- 28. 面向对象内部或外部方法的安全/验证?
- 29. 春季安全多重身份验证管理器
- 30. 春季3安全验证成功处理程序