冒充其他用户后如何获取原始用户?

Sac*_*-17 2 spring spring-security

我正在使用 spring 提供的切换用户过滤器来模拟用户。

如何获取在 SwitchUserFilter 中模拟的原始用户。

我正在做的步骤:

前任。

1. Log in with User1 
2. Impersonting to the User2. (user1 impersonate User2)
3. In Filter I am getting **authentication.getName()** as **User2**
4. While switching back to Original I am getiing **authentication.getName()** as **Null**
Run Code Online (Sandbox Code Playgroud)

现在我的需要是我想在 swtichback 时在过滤器中获取原始用户(User1)。

有没有可能。

请建议。让我知道有人需要更多输入。请给出意见。

提前致谢。

小智 5

这是您访问原始 User 的方式:

Collection<? extends GrantedAuthority> authorities = SecurityContextHolder.getContext().getAuthentication().getAuthorities();

for (GrantedAuthority grantedAuthority : authorities) {
    if (SwitchUserFilter.ROLE_PREVIOUS_ADMINISTRATOR.equals(grantedAuthority.getAuthority())) {
        System.out.println(((SwitchUserGrantedAuthority) grantedAuthority).getSource().getPrincipal());
    }
}
Run Code Online (Sandbox Code Playgroud)