Я пытаюсь сохранить 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
}
Iустановите cookie равным httpOnly: false
, так как я думал, что это единственный способ для браузера прочитать его.Вот что я вижу в браузере после входа в систему:
Нет файлов cookie.