首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与JWT和express-JWT有问题

与JWT和express-JWT有问题
EN

Stack Overflow用户
提问于 2015-12-30 02:50:52
回答 1查看 4.4K关注 0票数 0

我正在测试express-jwt和jsonwebtokens。我从来没有用过这个,我想要一些帮助!

我已经完成了基本的设置,我只有一条受保护的路径。

代码语言:javascript
复制
app.use('/api', expressJWT({secret: 'cat'}));

不幸的是,我无法访问'/api‘,因为它给了我这个错误

代码语言:javascript
复制
UnauthorizedError: No authorization token was found

如果我使用POSTman并发出带有以下标题的GET请求

代码语言:javascript
复制
Authorization -> Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6ImJhc2hpciIsImlhdCI6MTQ1MTQ0MjM4NywiZXhwIjoxNDUxNDQyNjg3fQ.CnaLvS_oCEy_mp_9MSAmTTylJqQMI2Qlq9V3emAmN3E

一切正常,我能够访问'/api‘中的内容。

但是我的问题是在我的快速应用程序中,特别是当我试图将用户重定向到一个新的受保护的路由时。

用户登录,我创建了一个新的jwt令牌,并将用户重定向到'/api‘

代码语言:javascript
复制
router.post('/login', passport.authenticate('local'), function (req, res) {
    myToken = jwt.sign({
      username: req.body.username
    }, 'cat', {expiresIn: 60*5});
    res.redirect('/api');
});

在这个路径中,我设置了标题并呈现页面。

代码语言:javascript
复制
router.get('/api',  function (req, res) {
  res.render('index', {user: req.user});
});

不幸的是,我得到了以下错误

代码语言:javascript
复制
UnauthorizedError: No authorization token was found

我的目标是能够将用户重定向到受保护的路由。

据我所知,由于/api是一种受保护的路由,所以express-jwt应该设置我的授权头。即使我尝试使用中间件手动设置头,我仍然会得到一个错误。

任何帮助都是非常感谢的!

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-31 02:47:03

试试像res.redirect('/api?token ' + myToken);这样的东西

然后,要接收查询输入,请使用自定义函数更改expressJWT普通函数。

代码语言:javascript
复制
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文档和其他堆栈答案。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34522275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档