Я начал изучать весну. У меня есть POST-запросы, но мне нужно сначала войти в систему:
POST / api / login Параметры: электронная почта, пароль Ответ для простоты: успех / неудача
Я прошел учебные курсы, чтобы:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf()
.disable()
.authorizeRequests()
.antMatchers("/api/register").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.usernameParameter("email")
.passwordParameter("password")
.loginProcessingUrl("/api/login")
.successForwardUrl("/api/login")
.failureForwardUrl("/api/login")
.permitAll();
}
Почти все, что я хотел получить: все работает, и сеанс установлен в куки. Я хотел бы добиться следующего: 1. Так что запрос GET / api / login никак не обрабатывается. Другими словами, форма не должна отображаться. 2. При успешной / неудачной авторизации просто верните ответ. Теперь я могу передать свой путь в successForwardUrl (например, / api / success-login) и faultForwardUrl (например, / api / fail-login) и вернуть результат в обработчик. Но это не выглядит хорошо. Я хотел бы получить что-то вроде этого:
@RestController
@RequestMapping("/api")
public class Controller {
@PostMapping("/login")
public String login(Authentication authentication) {
if (authentication.isAuthenticated()) {
return "success";
}
return "failure";
}
}
Пожалуйста, скажите мне, как это сделать, или, возможно, я двигаюсь не в том направлении.