#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;