@Bean
public SwitchUserFilter switchUserFilter() throws Exception {
SwitchUserFilter switchUserFilter = new SwitchUserFilter();
switchUserFilter.setUserDetailsService(this.userDetailsService);
switchUserFilter.setTargetUrl("/admin/info");
return switchUserFilter;
}
//添加过滤器
http.addFilterAfter(switchUserFilter(), FilterSecurityInterceptor.class).authorizeRequests()
.antMatchers("/login/impersonate").authenticated()
.antMatchers("/logout/impersonate*").authenticated();
@GetMapping(value = "/info")
@Log(value = "获取当前登录用户信息", action = 1, module = "用户管理")
public Result getAdminInfo() {
return Result.success(SecurityContextHolder.getContext().getAuthentication().getPrincipal());
}
没有报错成功跳到/admin/info 当前登录用户信息接口,但是一直是切换前的用户,不知什么情况,求赐教。会不会是当它重定向到目标URL时即"/admin/info" ,滤器再次对用户进行身份验证,并重写SwitchUserFilter完成的所有工作,怎么解决呢。
下图是请求结果
