Итак, я делаю простое приложение для магазина игр с функцией входа / регистрации, индексной страницей с играми, которые нужно «купить», страницей, где пользователь может увидеть купленные игры, и диаграммой, которая поможет пользователям покупайте хорошие игры. Мне удалось заставить работать мои функции входа и регистрации, он также создает токен для пользователя, и я хочу, чтобы этот токен сохранялся в файлах cookie, когда пользователь регистрируется, а затем при перенаправлении на страницу индекса он проверяет токен, хранящийся в файлах cookie, на разрешить пользователю войти, и это проблема, токен хранится в файлах cookie, но он говорит, что мой req.cookies.token не определен, поэтому он продолжает выдавать мне сообщение об ошибке вместо перенаправления на страницу индекса, я не уверен, что я делаю не так
это моя служба авторизации
const cookieParser = require("cookie-parser");
var jwt = require('jsonwebtoken');
require("dotenv-safe").config();
exports.authorize = function(req, res, next){
const token = req.body.token || req.query.token || req.cookies.token || req.headers['x-access-token'];
console.log(req.cookies.token);
if (!token){
res.status(401).json({auth: false, message: 'You need to Login to access this page.'});
} else {
jwt.verify(token, process.env.SECRET, function (error, decode){
if (error){
res.status(401).json({auth: false, message: 'Invalid Token.'});
} else {
next();
}
});
}
}
Это моя функция входа
var jwt = require('jsonwebtoken');
const cookieParser = require('cookie-parser');
require("dotenv-safe").config();
exports.login = async(mail, pass) => {
const user = await Usuario.findOne({ email: mail });
const id = user._id;
if (user.email === mail && user.ValidPassword(pass)){
const token = jwt.sign({id}, process.env.SECRET, {expiresIn: 18000}); //5 min
return res.cookie('x-access-token', token, { secure: false, httpOnly: true});
return token;
} else{
throw({status: 404, code: 'User not Found.', message: 'Try another E-mail.'});
}
}