2015-07-13 116 views
4

我對Spring Impersonating用戶不瞭解。如何在Spring中模擬用戶使用SwitchUserFilter?

我已經通過一些模擬用戶的配置示例代碼,並注意到SwitchUserFilter用於此實現。

如何使用Spring SwitchUserFilter Filter實現模擬用戶,它是如何工作的? 模仿用戶的內部流程是什麼?

在我的應用程序中,我也使用了spring security。

任何人都可以請幫我簡單的描述或任何示例來實現這一目標嗎?

回答

15

您首先需要創建的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); 

現在,開關,您可以使用

GET /login/impersonate?username=loginIdOfTheNewUser 

並轉回

GET /logout/impersonate 

請注意,確保現有用戶必須擁有交換機的足夠權限是您的工作。一種常見的做法可能是限制/login/impersonate只有管理員,並和/logout/impersonate到身份驗證的用戶,就像這樣:

 .authorizeRequests() 
      .antMatchers("/login/impersonate*").hasRole("ADMIN") 
      .antMatchers("/logout/impersonate*").authenticated() 
      .antMatchers("/**").permitAll(); 

一個完整的示例,請參見this

相關問題