Я пытаюсь создать прототип приложения Java EE с использованием различных фреймворков. Все работает отлично, за исключением уровня безопасности. Я решил использовать Spring Security с настройкой Spring.Конфигурация службы безопасности Spring
Код выглядит так:
Spring Security Config
@Configuration
@EnableWebMvcSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter
{
@Autowired
private MyUserDetailsService userDetailsService;
@Override
protected UserDetailsService userDetailsService() {
return this.userDetailsService;
}
@Override
public void configure(WebSecurity web) throws Exception {
web
.ignoring()
.antMatchers("/resources/**");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.formLogin()
.loginPage("/login")
.loginProcessingUrl("/login/authenticate")
.failureUrl("/login?error=bad_credentials")
.and()
.logout()
.logoutUrl("/signout")
.deleteCookies("JSESSIONID")
.and()
.authorizeRequests()
.antMatchers("/admin/**").hasRole("ADMIN")
.antMatchers("/**").permitAll()
.and()
.csrf();
}
}
Деталь пользователя Обслуживание
@Service("myUserDetailsService")
public class MyUserDetailsService implements UserDetailsService
{
public static final Logger log = Logger.getLogger(MyUserDetailsService.class);
public MyUserDetailsService() {
}
@Autowired
private UserDao userDao;
@Override
public UserDetails loadUserByUsername(String userName) throws UsernameNotFoundException {
final User user = getSystemUser(userName);
final List<GrantedAuthority> authorities = getUserAuthorities(user);
return buildUserForAuthentication(user, authorities);
}
private User buildUserForAuthentication(User user, List<GrantedAuthority> authorities) {
//...
}
private User getSystemUser(String alias) {
//...
}
private List<GrantedAuthority> getUserAuthorities(User user) {
//...
return null;
}
}
Что я ожидаю этот код, чтобы сделать то, что, когда /login/authenticate
достигается с пользователем & pass params, базовый код пружины вызывает мою службу пользователя, но этого никогда не происходит.
Что мне не хватает?
Я использую spring-security 3.2.3.RELEASE.
кажется Тар, что метод (registerAuthentication (AuthenticationManagerBuilder авторизация)) не является частью WebSecurityConfigurerAdapter. Какой класс вы продлеваете? –
Я пропустил версию, которую вы упомянули в пользователе, я считаю, что для 3.2.3 config должен быть @Autowired \t public void configureGlobal (AuthenticationManagerBuilder auth) throws Exception {, я отредактирую в вопросе –
Вы абсолютно прав! В то же время я googled, и я нашел в журнале изменений для этой версии, что метод был переименован. Я переписал свой код, и теперь он работает! Большое спасибо за вашу помощь! С уважением. –