在我的项目中,我正在使用Spring Security。要获取当前的用户名,我正在访问SpringContextHolder

UserDetails principal = (UserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
username = principal.getUsername()


使用org.springframework.security.core.userdetails.UserDetails对象,我只能检索有限的信息,例如用户名,密码,角色等。如果要检索用户ID,该怎么办?我是否需要每次都进行数据库调用以获得与用户名相对应的更多用户详细信息?我不能为会话对象设置属性吗?在大多数文章中,使用ModelAndView对象提出了解决方案。但就我而言,我不需要SessionAttributes用于视图层,但也需要在业务逻辑层。

主要是我想以某种方式保留UserID和ClientID以便在需要的任何时间和地点进行访问。

最佳答案

您可以编写自定义UserDetails和UserDetailsS​​ervice

Spring Security: custom userdetails

Custom UserDetailsService example for spring 3 security

07-28 01:08
查看更多