Sac*_*-17 9 impersonation spring-mvc spring-security magnolia
我对Spring模拟用户没有任何了解.
我已经通过一些示例代码来模拟用户,并注意到SwitchUserFilter用于此实现.
如何使用Spring SwitchUserFilter Filter实现模拟用户以及它是如何工作的?冒充用户的内部流程是什么?
在我的应用程序中,我也使用spring security.
任何人都可以通过简单的描述或任何示例来帮助我实现这一目标吗?
San*_*jay 22
您首先需要创建一个实例SwitchUserFilter,如下所示:
@Bean
public SwitchUserFilter switchUserFilter() {
SwitchUserFilter filter = new SwitchUserFilter();
filter.setUserDetailsService(userDetailsService);
filter.setSuccessHandler(authenticationSuccessHandler);
filter.setFailureHandler(authenticationFailureHandler());
return filter;
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以这样添加过滤器:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
...
.addFilterAfter(switchUserFilter(), FilterSecurityInterceptor.class);
Run Code Online (Sandbox Code Playgroud)
现在,要切换,你可以使用
GET /login/impersonate?username=loginIdOfTheNewUser
Run Code Online (Sandbox Code Playgroud)
并切换回来
GET /logout/impersonate
Run Code Online (Sandbox Code Playgroud)
请注意,确保现有用户必须拥有足够的交换机权限是您的职责.通常的做法可能是/login/impersonate仅限制为ADMINs,以及/logout/impersonate经过身份验证的用户,如下所示:
.authorizeRequests()
.antMatchers("/login/impersonate*").hasRole("ADMIN")
.antMatchers("/logout/impersonate*").authenticated()
.antMatchers("/**").permitAll();
Run Code Online (Sandbox Code Playgroud)
请参阅此示例以获取完整示例.
| 归档时间: |
|
| 查看次数: |
5986 次 |
| 最近记录: |