我正在使用express with node。
我需要使用一个模块('authenticationJwt')来验证用户并在其他模块('user')中调用它。
我正在使用下一个代码,但在调用身份验证模块后,应用程序永远不会继续调用模块中的下一个结构。 例如,我的应用程序console.log('conv')永远不会被调用。
如果我使用sintax:
router.get('/nome/:id',auth.isAuthenticated,async function(req, res, next)....
它有效,但我有很多获取和帖子,我想在全局而不是单独验证所有路由到模块。
我做错了什么?
//用户模块
'use strict';
const express = require('express');
const router = express.Router();
const auth=require('./authenticationJwt');
router.use(auth.isAuthenticated);
router.get('/nome/:id',async function(req, res, next) {
//never is called
console.log('conv');
})
module.exports=router;
// authenticationJwt module
'use strict';
const express = require('express');
const jwt = require('jsonwebtoken'); // Import JWT Package
const auth = {}
const secret = 'asdsad'; // Create custom secret for use in JWT
auth.isAuthenticated=function(req, res, next) {
if (!req.header('Authorization')) {
return res.json({ success: false, message: 'No token provided' }); // Return error if no token was provided in the request
}
var token = req.header('Authorization').split(' ')[1];
// Check if token is valid and not expired
if (token) {
// Function to verify token
jwt.verify(token, secret, function(err, decoded) {
if (err) {
res.json({ success: false, message: 'Token invalid' }); // Token has expired or is invalid
} else {
req.decoded = decoded; // Assign to req. variable to be able to use it in next() route ('/me' route)
next(); // Required to leave middleware
}
});
} else {
res.json({ success: false, message: 'No token provided' }); // Return error if no token was provided in the request
}
};
module.exports=auth;