spring - 如何在冒充其他用户后获得原始用户?

标签 spring spring-security

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

如何获取在 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**

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

有可能吗。

请推荐。 让我知道任何人需要更多的意见。请评论。

提前致谢。

最佳答案

这是您访问原始用户的方式:

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

关于spring - 如何在冒充其他用户后获得原始用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32966613/

相关文章:

grails - Grails Spring安全性grails.plugins.springsecurity.providerNames

spring-mvc - Spring Boot 集成测试忽略 AutoConfigureMockMvc 注释中的 secure=false,得到 401

java - 修改Spring Cloud Config优先级

java - 使用 Spring 框架获取 'Named query not found'

java - 如何从标题创建路径变量?

spring-security - 在过滤器链中的其他模式之前定义了通用匹配模式('/**'),导致它们被忽略

javascript - CORS 干扰 Spring Security oauth2

java - 带有俄语用户名的 Spring Security UTF-8 代码页

java - 如何使用 WebServiceTemplate 发送 SOAP 请求?

java - JPA 双向关系抛出 java.lang.StackOverflowError : null