Spring security 如何获取当前登录的CustomUser对象

Spring security 如何获取当前登录的CustomUser对象,spring-security,Spring Security,因此,我试图找出是否有更简单、更直接的方法为当前登录的用户获取CustomUser对象 我有一个自定义UserServiceImplementation,并使用自定义用户对象 在四处阅读时,我注意到了@AuthenticationPrincipal的用法,但我似乎找不到任何它起作用的例子。此外,它还取决于@EnableWebMVCSecurity,对于我正在使用的当前版本的spring安全性(4.x.x),它被降低了 我是在寻找能够实现目标的正确功能,还是应该寻找完全不同的功能 我的当前代码示例

因此,我试图找出是否有更简单、更直接的方法为当前登录的用户获取CustomUser对象

我有一个自定义UserServiceImplementation,并使用自定义用户对象

在四处阅读时,我注意到了@AuthenticationPrincipal的用法,但我似乎找不到任何它起作用的例子。此外,它还取决于@EnableWebMVCSecurity,对于我正在使用的当前版本的spring安全性(4.x.x),它被降低了

我是在寻找能够实现目标的正确功能,还是应该寻找完全不同的功能

我的当前代码示例,其中我被迫获取当前用户对象,以便登录用户能够实现进一步处理

@RequestMapping(value = "/map", method = method = RequestMethod.POST)
public String processMap(@Valid MapProc mapObject) {
Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();

User user = userInterface.findByLogin(((UserDetails) principal).getUsername());

// rest of code

return "map/processed";
}

会话中始终是UserDetailsService持久化中的UserDetails对象。如果您有自己的实现,witch将返回您自己的用户对象,您可以通过以下方式获得它:

Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
if (principal instanceof User) {
   //Your Code here
}

我追求的对象不仅仅是用户名,它与SecurityContextHolder.getContext().getAuthentication().getPrincipal().getUsername()的功能相同。有什么特殊原因不能将此对象存储在会话中吗?据我所知,系统已返回用户对象,但返回内部版本。我读到有一种方法可以用于定制用户对象,这在编码的某些方面使生活更简单,如果有更好的方法,在会话中保持它似乎是不合理的。
Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
if (principal instanceof User) {
   //Your Code here
}