Как мне использовать jwt-файл cookie HttpOnly во внешнем интерфейсе

#express #vue.js #cookies #jwt #cookie-httponly

#экспресс #vue.js #файлы cookie #jwt #cookie-httponly

Вопрос:

Как мне использовать JWT-файл cookie HttpOnly во внешнем интерфейсе, поскольку я не могу читать из файла cookie HttpOnly?

Каков наилучший способ сохранения JWT после извлечения его из файла cookie HttpOnly? Нужно ли мне вообще его где-то хранить, поскольку у меня уже есть файл cookie, переданный из серверной части?

Я знаю, что локальное хранилище небезопасно.

Я не знаю, имеет ли это значение, но я обслуживаю свое приложение Vue на http://localhost:8080 /, и я запускаю свое серверное приложение на http://localhost:3000 используя узел / Экспресс.

Ответ №1:

httpOnly файлы cookie по своей конструкции недоступны вашему браузеру.

Вы должны включить credentials в свой запрос любой http-клиент, который вы используете:

fetch.js

 // with axios
axios.post(url, formData, {
    withCredentials: true
})

// or with fetch
fetch(url, {
  credentials: 'include'
});
  

И внутри вашей экспресс-точки входа:

app.js

 const cors = require("cors");
const cookieParser = require("cookie-parser");

const COOKIE_SECRET = "veryLongString";

const corsOptions = {
    credentials: true,
    ... other cors options ...
};

app.use(cookieParser(COOKIE_SECRET));
app.use(cors(corsOptions));

  

Эти конфигурации автоматически передадут ваш httpOnly файл cookie вместе с вашими запросами, и вы сможете получить к ним доступ со своего сервера

Если файл cookie signed :

const { tokenName } = req.signedCookies;

или иначе:

const { tokenName } = req.cookies;