2015-10-06 93 views
2

我正在使用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** 

我需要的是我想在过滤器中的原始用户(用户1 )在swtichback的时间。

这是可能的。

请建议。 让我知道任何人都需要更多的投入。请给出意见。

在此先感谢。

回答

3

这是你可以访问原来的用户:

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()); 
    } 
}