NodeJS 使用 JWT 令牌授权

问题描述

在允许用户获取“欢迎”页面之前,我正在尝试使用 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,但仍然无法获得欢迎页面。我错过了什么?

解决方法

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

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

并在您的路线文件中

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

并停止使用