【发布时间】:2020-09-13 10:22:36
【问题描述】:
所以我正在制作一个简单的游戏商店应用程序,它具有登录/注册功能、一个包含“购买”游戏的索引页面、一个供用户查看他们购买的游戏的页面以及一个可以帮助用户的图表买好游戏。我设法使我的登录和注册功能正常工作,它还为用户创建了一个令牌,我希望在用户登录时将该令牌存储到 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.'});
}
}
【问题讨论】: