метод POST для авторизации Spring Security
В общем, пытаюсь реализовать авторизацию Spring Security. В дальнейшем, в качестве клиента будет выступать Андроид приложение. Сейчас сделал пробное приложение с регистрацией и авторизацией, проверил в браузере, работает отлично. Перешел проверить в Postman, регистрация работает. А попытался отправить POST запрос на авторизацию, в ответе от сервера получаю страницу с логином. Прочитал про loginProcessingUrl, думал что поможет, но также выводит страницу логина.
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private DataSource dataSource;
@Bean
public UserDetailsService userDetailsService() {
return new CustomUserDetailsService();
}
@Bean
public BCryptPasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
public DaoAuthenticationProvider authenticationProvider() {
DaoAuthenticationProvider authProvider = new DaoAuthenticationProvider();
authProvider.setUserDetailsService(userDetailsService());
authProvider.setPasswordEncoder(passwordEncoder());
return authProvider;
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(authenticationProvider());
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/users").authenticated()
.anyRequest().permitAll()
.and()
.formLogin()
//.loginPage("/login.html")
.loginProcessingUrl("/process_login")
.usernameParameter("email")
.defaultSuccessUrl("/users")
.permitAll()
.and()
.logout()
.logoutUrl("/perform_logout")
.logoutSuccessUrl("/").permitAll();
}
А вот контроллер:
@Controller
@RequestMapping
public class AppController {
@Autowired
private UserRepository userRepository;
@GetMapping("/")
public String viewHomePage() {
return "index";
}
@GetMapping("/register")
public String showRegistrationForm(Model model) {
model.addAttribute("user", new User());
return "signup_form";
}
@PostMapping("/process_register")
public String processRegister(User user) {
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
String encodedPassword = passwordEncoder.encode(user.getPassword());
user.setPassword(encodedPassword);
userRepository.save(user);
return "register_success";
}
@GetMapping("/users")
public String listUsers(Model model) {
List<User> listUsers = userRepository.findAll();
model.addAttribute("listUsers", listUsers);
return "users";
}
}