我不了解 Spring 模拟用户。
我已经浏览了一些用于模拟用户的配置示例代码,并注意到 SwitchUserFilter 用于此实现。
如何使用 Spring SwitchUserFilter Filter 实现模拟用户以及它是如何工作的? 冒充用户的内部流程是怎样的?
在我的应用程序中,我也使用 spring security。
任何人都可以帮我提供简单的描述或任何示例来实现此目的吗?
最佳答案
您首先需要创建一个 SwitchUserFilter
实例,如下所示:
@Bean
public SwitchUserFilter switchUserFilter() {
SwitchUserFilter filter = new SwitchUserFilter();
filter.setUserDetailsService(userDetailsService);
filter.setSuccessHandler(authenticationSuccessHandler);
filter.setFailureHandler(authenticationFailureHandler());
return filter;
}
然后,您可以这样添加过滤器:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
...
.addFilterAfter(switchUserFilter(), FilterSecurityInterceptor.class);
现在,要切换,您可以使用
POST /login/impersonate?username=loginIdOfTheNewUser
并切换回来
POST /logout/impersonate
请注意,您的工作是确保现有用户必须拥有足够的切换权限。常见的做法是将 /login/impersonate
仅限制为管理员,并将 /logout/impersonate
限制为经过身份验证的用户,如下所示:
.authorizeRequests()
.antMatchers("/login/impersonate*").hasRole("ADMIN")
.antMatchers("/logout/impersonate*").authenticated()
.antMatchers("/**").permitAll();
参见this获取完整示例。
关于spring-mvc - 如何在Spring中使用SwitchUserFilter模拟用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31377125/