【问题标题】:NodeJS Authorize with JWT tokenNodeJS 使用 JWT 令牌进行授权
【发布时间】:2021-08-17 10:42:41
【问题描述】:

我正在尝试使用 JWT 令牌来授权用户,然后才允许他们获取“欢迎”页面。

这是端点的代码;

var apiRoutes = express.Router();
apiRoutes.use(bodyParser.urlencoded({ extended: true }));
apiRoutes.use(bodyParser.json());
apiRoutes.use(verifyToken);
apiRoutes.get('/', welcome)

这是verifyToken 函数;

var verifyToken=function (req, res,next) {
    var token = req.body.token || req.query.token || req.headers['token'];
     if (token) {
        jwt.verify(token, config.secret, function (err, currUser) {
            if (err) {
                res.send(err);
            } else {
                req.currUser = currUser;
                next();
            }
        });
    }
     else {
        res.status(401).send("Invalid Access");
    }
};
module.exports=verifyToken;

这是欢迎页面;

module.exports=function(req, res) {
    res.send('Welcome..!! Now  you are now authenticated !');
};

但是当我尝试在 Postman 中获取端点时,我得到了这个;

 Cannot GET /

我尝试将令牌作为参数、原始正文 JSON、标题和表单放入 Postman,但仍然无法获得欢迎页面。我错过了什么?

【问题讨论】:

  • 你能显示你调用 apiRoutes 的代码吗?
  • 路由在server.js文件中调用,var port = process.env.PORT || 3000; var app = express(); app.use(bodyParser.urlencoded({extended: true })); app.use(bodyParser.json()); app.listen(port, function() { console.log('Express server监听端口' +port); });
  • 不要忘记调用 server.js 中的 apiRoutes 你应该这样做app.use('/', apiRoutes)

标签: node.js jwt restful-authentication express-jwt


【解决方案1】:

为了确保你的中间件在调用端点时运行,你可以这样写: 在你的 server.js 中

app.use('/api', apiRoutes);

在你的路线中

apiRoutes.get('/', verifyToken, welcome);

并从使用中删除它

【讨论】:

  • 虽然很有希望,但似乎并没有做到。
  • 这是有效的方法。如果你用这个编辑你的答案,我可以选择它。 app.use('/api', apiRoutes); apiRoutes.use(verifyToken); apiRoutes.get('/', verifyToken, welcome);
  • 我使用 /api/ 作为路由。
  • 最重要的是你的问题解决了:)
猜你喜欢
  • 2019-06-04
  • 2018-06-05
  • 2020-10-20
  • 2019-02-26
  • 2017-08-22
  • 2017-07-09
  • 2023-03-18
  • 2021-04-11
  • 2021-10-20
相关资源
最近更新 更多