我使用的是具有java配置和兩個HttpSecurity配置的spring-security 3.2.0.RC2。一個用於REST API,另一個用於UI。 當我發佈到/註銷它重定向到/ login?註銷,但然後(不正確)重定向到/登錄。 當我成功輸入用戶名和密碼時,我將重定向到登錄?註銷,並且必須再次輸入憑據以進入主頁面。 所以看起來像permitAll登錄是不是榮幸的登錄?註銷。彈簧安全登錄?註銷重定向登錄
我的安全配置是這樣的:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Resource
private MyUserDetailsService userDetailsService;
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth)
throws Exception {
StandardPasswordEncoder encoder = new StandardPasswordEncoder();
auth.userDetailsService(userDetailsService).passwordEncoder(encoder);
}
@Configuration
@Order(1)
public static class RestSecurityConfig
extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.antMatcher("/v1/**").authorizeRequests()
.antMatchers("/v1/admin/**").hasRole("admin")
.antMatchers("/v1/account/**").hasRole("admin")
.antMatchers("/v1/plant/**").access("hasRole('admin') or hasRole('dataProvider')")
.antMatchers("/v1/upload/**").access("hasRole('admin') or hasRole('dataProvider')")
.antMatchers("/v1/**").authenticated()
.and().httpBasic();
}
}
@Configuration
@Order(2)
public static class UiSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/resources/**");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/account/**").hasRole("admin")
.antMatchers("/admin/**").hasRole("admin")
.antMatchers("/plant/**").access("hasRole('admin') or hasRole('dataProvider')")
.antMatchers("/upload/**").access("hasRole('admin') or hasRole('dataProvider')")
.anyRequest().authenticated()
.and().formLogin().loginPage("/login").permitAll();
}
}
}
任何人都可以解釋爲什麼發生這種情況或有什麼不對我的配置?
我看到這個配置的第二個問題是,雖然sec:authorize access = ... does not work,但是jsp標籤sec:authorize url = ...不起作用。 在url = ...大小寫的情況下,即使用戶未被授權,也會始終顯示內容。 我知道用戶沒有被授權,因爲它應該已經被sec隱藏的鏈接:授權標籤導致403 Forbidden。
對此的任何幫助非常感謝!
這解決了我的問題 - 但我仍然不確定是什麼讓重定向登錄?註銷 - 我沒有在我的代碼在任何地方......是一個春季安全的事情? –
@wwarren很高興幫助。當春季安全處理註銷時,重定向到登錄?註銷以顯示「您已被註銷」的登錄頁面。信息。 – shawnim