Как я могу перенаправить пользователя обратно в приложение React с токеном JWT после входа в систему на моем сервере авторизации? - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть клиентское приложение в React, где, когда пользователь пытается войти, перенаправляется на мой сервер Spring Security Auth. Здесь пользователю предлагается войти в систему со своими учетными данными на странице входа в систему stati c с сервера. После успешного входа в систему возвращается токен JWT. Однако я хочу перенаправить пользователя обратно в клиентское приложение с JWT в заголовке, чтобы я мог использовать токен для запросов к другой службе.

Это моя конечная точка аутентификации, которая вызывается со страницы входа в систему submit:

@RequestMapping(value= "/authenticate", method = RequestMethod.POST)
public ResponseEntity<?> createAuthenticationToken(@RequestParam Map<String, String> body) throws Exception{
    AuthenticationRequest authenticationRequest = new AuthenticationRequest(body.get("userName"),body.get("password"));
    System.out.println("Authcenticating");
    try {
        authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(authenticationRequest.getUserName(), authenticationRequest.getPassword()));
    }catch (BadCredentialsException e){
        throw new Exception("Feil brukernavn eller passord", e);
    }

    final UserDetails userDetails = myUserDetailsService.loadUserByUsername(authenticationRequest.getUserName());
    final String jwt = jwtTokenUtil.generateToken(userDetails);

    return ResponseEntity.ok(new AuthenticationResponse(jwt)); //What can I change this with?
}

Отправка части логина. html page:

<form action="http://localhost:8080/authenticate" method="POST">
                <label for="username">&nbsp;Brukernavn</label>

                <div class="username">
                    <input class="" type="text" id="userName" name="userName" aria-label="Brukernavn" required autofocus autocomplete="username" />
                </div>

                <label for="password">&nbsp;Passord</label>

                <div class="password">
                    <input class="" type="password" id="password" name="password" aria-label="Passord" required autocomplete="current-password" />
                </div>

                <button type="submit" class="button-primary breathe-top">Logg inn</button>
            </form>

Я видел несколько способов сделать это с помощью перенаправления: url с использованием Spring MVC, но есть ли другой способ сделать это? Или есть другой способ сделать первоначальный вызов на сервер аутентификации? Любая помощь приветствуется.

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