Я пытаюсь сохранить JWT в файлах cookie в браузере, чтобы я мог повторно использовать его для выполнения вызовов API через защищенные маршруты.
Приведенный ниже код представляет собой сценарий входа в систему (без обработки ошибок, чтобы его было легче читать), который проверяет, совпадают ли адрес электронной почты и пароль пользователя с теми, что находятся в базе данных.
const auth = (req, res) => {
const { email, password } = req.body
User.findOne({ email }, async (err, user) => {
// If password is correct, create token and send it back
if (user && bcrypt.compareSync(password, user.password)) {
const token = await jwt.sign(
{ id: user._id },
config.auth.secret,
{ expiresIn: config.auth.expireTime }
)
res
.status(200)
.cookie('access_token', token, {
secure: false,
maxAge: 120000,
httpOnly: false,
})
.json({
message: 'User found',
user
})
return
}
// Wrong email or password
res.status(401).json({ message: 'Wrong Email/Password', data: null })
})
return
}
Я установил для файла cookie значение httpOnly: false, так как думал, что это единственный способ, с помощью которого браузер сможет его прочитать. Вот что я вижу в браузере после входа в систему:
Нет печенья.





Вместо того, чтобы отправлять куки из бэкэнда, я отправил их в заголовках ответа при входе в систему, а затем сохранил куки во внешнем интерфейсе с помощью этого пакета: https://www.npmjs.com/package/js-cookie
Теперь я могу повторно использовать файл cookie для будущих вызовов API после входа в систему (в моем случае для получения элементов списка дел, папок и т. д.).