Не удалось отправить Cook ie в GET-запросе, несмотря на {withCredentials: true} - PullRequest
0 голосов
/ 08 февраля 2020

Я намереваюсь реализовать простое приложение для входа в систему с помощью Spring Boot REST API, JWT (Auth0 - java -jwt ) и Angular 8. После входа в систему я получаю Cook ie из REST API следующим образом:

Cookie cookie= new Cookie("token",token);
    cookie.setPath("/");
    cookie.setDomain("localhost");
    cookie.setHttpOnly(true);
    cookie.setMaxAge(60 * 60 * 24 * 365 * 10);
    //cookie.setSecure(true); - for deployment
    httpServletResponse.addCookie(cookie);

В браузере (инструменты разработчика, заголовки ответа) я вижу полученного Cook ie с правильным токеном. Тем не менее, я не вижу его в chrome://settings/siteData?search, я пробовал Chrome, Chromium и Firefox, все показывают одинаковые результаты.

Теперь, вот как я отправляю свой запрос от Angular client:

const h = new HttpHeaders().append("Authorization", "Bearer ");
this.http.get("http://localhost:8080/api/users", {headers:h, withCredentials: true })

В заголовках запросов я не вижу этого повара ie, и по этой причине, я полагаю, запрос не авторизуется.

enter image description here

Чего мне не хватает? Кроме того, я ценю любые статьи, которые демонстрируют простой вход в систему с помощью Spring Boot (только REST API, но не с Thymleaf или чем-то подобным), Angular и JWT (java -jwt). Спасибо.

1 Ответ

1 голос
/ 08 февраля 2020

По моему мнению, проблема в том, что вы отправляете заголовок авторизации без JWT, фактически вы пишете в своем коде const h = new HttpHeaders().append("Authorization", "Bearer ");.

Я решил похожую проблему с fetch в ответ приложения, но я думаю, что это должно быть то же самое для вас, не устанавливая заголовок авторизации, но устанавливая, как вы, с помощьюCredentials: true.

в конце m советует попытаться удалить заголовок из-за вашей конфигурации, которую вы делаете не отправлять токен JWT

СОВЕТЫ , если в своем вопросе вы написали пустой токен, но в свой рабочий код вы вставляете его правильно, возможно, вам следует проверить, нормально ли работает ваш сервер ресурсов Я не знаю ... postman curl или что-то в этом роде, или вы должны проверить, что ваш токен является действительным токеном, а не токеном с истекшим сроком действия

ps в реализации вашего внутреннего сервера Я видел очень низкоуровневые детали, которые я предлагаю использовать Spring Security oauth2 модуль, если вы используете весеннюю загрузку 2.x или Sp звоните Cloud Security OAuth2, если вы используете Spring Boot 1.5.x версии

...