【发布时间】:2019-10-15 07:00:22
【问题描述】:
我正在尝试使用 jsonwebtoken、cookie-parser 在客户端中设置 cookie 和 jQuery 来做一个授权中间件。
为此,我使用中间件来检查授权。
这是中间件
const jwt = require('jsonwebtoken')
module.exports = (req,res,next)=> {
try{
const token = req.headers.authorization.split("=")[1];
const decodedToken = jwt.verify(token, process.env.JWT_KEY)
req.userData = decodedToken;
next();
} catch(error){
return res.status(401).json({
message: "Auth failed"
})
}
}
在我的 API 中,我像这样创建和发送令牌:
const token = jwt.sign({
email: user[0].email,
userId: user[0]._id
},
process.env.JWT_KEY, {
expiresIn: "1h"
}
)
res.cookie('userToken', token)
res.render('index', {
movies: {}, token:token
});
在客户端,我像这样发送回服务器:
var userToken = document.cookie;
// console.log(userToken)
$.ajax({
url: "/movies/add",
type: "GET",
beforeSend: function (xhr, settings) {
console.log(xhr)
xhr.setRequestHeader('Authorization', 'Bearer ' + userToken);
}
});
movies/add 路由正在接收请求,因为它正在打印“它已输入”,但它没有重定向到 movies/addMovies。我错过了什么?
router.get('/add', checkAuth, function (req, res, next) {
console.log('it entered')
res.render('movies/addMovies', {
movies: {}
})
});
【问题讨论】: