我正在测试express-jwt和jsonwebtokens。我从来没有用过这个,我想要一些帮助!
我已经完成了基本的设置,我只有一条受保护的路径。
app.use('/api', expressJWT({secret: 'cat'}));不幸的是,我无法访问'/api‘,因为它给了我这个错误
UnauthorizedError: No authorization token was found如果我使用POSTman并发出带有以下标题的GET请求
Authorization -> Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6ImJhc2hpciIsImlhdCI6MTQ1MTQ0MjM4NywiZXhwIjoxNDUxNDQyNjg3fQ.CnaLvS_oCEy_mp_9MSAmTTylJqQMI2Qlq9V3emAmN3E一切正常,我能够访问'/api‘中的内容。
但是我的问题是在我的快速应用程序中,特别是当我试图将用户重定向到一个新的受保护的路由时。
用户登录,我创建了一个新的jwt令牌,并将用户重定向到'/api‘
router.post('/login', passport.authenticate('local'), function (req, res) {
myToken = jwt.sign({
username: req.body.username
}, 'cat', {expiresIn: 60*5});
res.redirect('/api');
});在这个路径中,我设置了标题并呈现页面。
router.get('/api', function (req, res) {
res.render('index', {user: req.user});
});不幸的是,我得到了以下错误
UnauthorizedError: No authorization token was found我的目标是能够将用户重定向到受保护的路由。
据我所知,由于/api是一种受保护的路由,所以express-jwt应该设置我的授权头。即使我尝试使用中间件手动设置头,我仍然会得到一个错误。
任何帮助都是非常感谢的!
谢谢!
发布于 2015-12-31 02:47:03
试试像res.redirect('/api?token ' + myToken);这样的东西
然后,要接收查询输入,请使用自定义函数更改expressJWT普通函数。
app.use('/api', expressJWT({
secret: 'cat',
credentialsRequired: false,
getToken: function fromHeaderOrQuerystring (req) {
if (req.headers.authorization && req.headers.authorization.split(' ')[0] === 'Bearer') {
return req.headers.authorization.split(' ')[1];
} else if (req.query && req.query.token) {
return req.query.token;
}
return null;
}
}));这主要来自于读取expressJWT文档和其他堆栈答案。
https://stackoverflow.com/questions/34522275
复制相似问题