URL перенаправления не имеет токена, который я отправляю - PullRequest
0 голосов
/ 12 сентября 2018

Всегда ли сообщение использует редирект для ответа на запрос. Если так, как я могу гарантировать, что заголовки ответа также переносятся на перенаправленный URL? В настоящее время я устанавливаю токен JWT в отправляемых заголовках ответа, но перенаправленный URL не содержит токен. Может кто-нибудь сказать мне, как я могу обеспечить получение токена JWT, чтобы я мог использовать его в своих дальнейших запросах.

String token = JWT.create()
                .withSubject(((LdapUserDetails) authentication.getPrincipal()).getUsername())
                .withExpiresAt(new Date(System.currentTimeMillis() + EXPIRATION_TIME))
                .sign(HMAC512(SECRET.getBytes()));
        response.addHeader(HEADER_STRING, TOKEN_PREFIX + token);

        Object redirectURLObject = request.getSession().getAttribute(REDIRECT_URL_SESSION_ATTRIBUTE_NAME);

        if(redirectURLObject != null)
            setDefaultTargetUrl(redirectURLObject.toString());
        else{
            setDefaultTargetUrl("http://localhost:8000");
        }
request.getSession().removeAttribute(REDIRECT_URL_SESSION_ATTRIBUTE_NAME);
        super.onAuthenticationSuccess(request, response, authentication);

With JWT token before redirect

After Redirect- Without JWT

1 Ответ

0 голосов
/ 12 сентября 2018

Если вы уверены в super.onAuthenticationSuccess(request, response, authentication); строке, это скорее всего виновник.

Я предполагаю, что ваш класс - это что-то вроде extends AbstractAuthenticationTargetUrlRequestHandler implements AuthenticationSuccessHandler {

Если вы будете копать глубже, вы найдете внутри handle метод в AbstractAuthenticationTargetUrlRequestHandler классе, который имеет эту строку:

redirectStrategy.sendRedirect(request, response, targetUrl);, который будет перенаправлен из вашего браузера со статусом 302.

Если вы понимаете эту проблему, она не может быть в шапке.Есть и другие способы: вы можете сделать AJAX-вызов из внешнего интерфейса, или вернуть JSON с JWT в заголовке или переадресацию без sendRedirect.

Может быть, вы хотите переслать запрос ( RequestDispatcher.forward ()vs HttpServletResponse.sendRedirect () )

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