Как я могу настроить авторизацию без формы в Spring и создать единый обработчик для результата авторизации? - PullRequest
0 голосов
/ 03 апреля 2020

Я начал изучать весну. У меня есть 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";
    }
}

Пожалуйста, скажите мне, как это сделать, или, возможно, я двигаюсь не в том направлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...