Я использую Spring-security 3.2.0.RC2 с конфигурацией java и двумя конфигурациями HttpSecurity. Один для REST API и один для пользовательского интерфейса. Когда я отправляю в/logout, он перенаправляется в/login? Logout, но затем (неправильно) перенаправляет/login. Когда я ввожу имя пользователя и пароль успешно, я получаю перенаправление на вход в систему logout и должен ввести учетные данные во второй раз, чтобы перейти на главную страницу. Итак, похоже, что разрешение для входа в систему не выполняется для входа в систему.spring-security login? Logout перенаправляет на логин
Моя конфигурация безопасности выглядит следующим образом:
@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();
}
}
}
Может кто-нибудь объяснить, почему это происходит, или что не так с моей конфигурации?
Вторая проблема, которую я вижу в этой конфигурации, заключается в том, что jsp tag sec: authorize url = ... не работает, хотя sec: authorize access = ... работает. В случае url = ... он всегда отображает контент, даже если пользователь не авторизован. Я знаю, что пользователь не авторизовался, потому что ударил ссылку, которая должна была быть скрыта секцией: разрешить тег в 403 Запрещено.
Любая помощь в этом очень ценится!
Это исправило мою проблему - но я все еще не уверен, что делает перенаправление для входа в систему? logout - у меня нет этого в моем коде где угодно ... это весенняя вещь безопасности? –
@wwarren Рад, что это помогло. Когда весенняя безопасность обрабатывает выход из системы ti, перенаправляется на вход в систему login logout, чтобы показать страницу входа в систему с «Вы были выведены из системы». сообщение. – shawnim