Я настраиваю веб-приложение, используя аутентификацию по имени пользователя и паролю с помощью thymeleaf и spring security. После успешного входа в систему я перенаправлен на URL, но я получаю 403 на этой странице. Ниже приведена моя конфигурация
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/", "index", "login", "/resource/**").permitAll()
.antMatchers("/userpage").hasRole("USER")
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.defaultSuccessUrl("/userpage")
.failureUrl("/login?error=true")
.permitAll()
.and()
.logout()
.logoutSuccessUrl("/login?logout=true")
.invalidateHttpSession(true)
.permitAll()
.and()
.csrf()
.disable();
}
Служба «Мой пользователь»
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
User user = userRepository.getUserByEmail(username);
if (user == null) {
throw new UsernameNotFoundException("User not found.");
}
log.info("loadUserByUsername() : {}", username);
return new org.springframework.security.core.userdetails.User(user.getId(),
user.getPassword(), getAuthority());
}
private List getAuthority() {
return Arrays.asList(new SimpleGrantedAuthority("USER")); // TODO
}
Мои контроллеры
@RequestMapping(value = "/login", method = RequestMethod.GET)
public String login() {
return "login";
}
@RequestMapping(value = "/userpage", method = RequestMethod.GET)
public String userpage(Model model) {
model.addAttribute("user", new User());
return "user-page";
}
Я вижу, как пользователь проходит проверку подлинности при отладке loadUserByUsername()
, но страница возвращается There was an unexpected error (type=Forbidden, status=403).
После того, как им направили defaultSuccessUrl("/userpage")
Любая помощь с благодарностью