【发布时间】:2020-08-16 18:36:25
【问题描述】:
我正在使用 Node.js 和 Express 创建一个 Web 应用程序。我有两个需要相同功能的路由文件。我想知道我应该在哪里定义这个函数。它应该放在不同的文件夹(助手或实用程序或其他什么?)或我的路线文件夹中的不同文件中。我当前的文件夹结构和https://github.com/WebDevSimplified/Mybrary很相似
【问题讨论】:
我正在使用 Node.js 和 Express 创建一个 Web 应用程序。我有两个需要相同功能的路由文件。我想知道我应该在哪里定义这个函数。它应该放在不同的文件夹(助手或实用程序或其他什么?)或我的路线文件夹中的不同文件中。我当前的文件夹结构和https://github.com/WebDevSimplified/Mybrary很相似
【问题讨论】:
如果您要使用相同的功能,您可以方便地将其定义在一个文件中,然后将其导入您的路线中。保存在哪里并不重要,这取决于你的项目的顺序。举例:
folder libs
--tokenValidator.js
folder routes
--folder create
----createCustomers.js
--folder read
----readCustomers.js
tokenValidator.js 包含:
module.exports = {
ensureToken (req, res, next) {
const bearerHeader = req.headers['authorization'];
//console.log(bearerHeader);
if(typeof bearerHeader !== 'undefined') {
const bearer = bearerHeader.split(' '); //separar bearer del token por espacios
const bearerToken = bearer[1]; //seleccionar el token
req.token = bearerToken; //comparar el token del servidor con el recibido
//console.log('token Validator fine')
next();
} else {
res.sendStatus(403);
//console.log('Fail in token Validator')
}
}
};
createCustomers.js 包含
const { ensureToken } = require('../../libs/tokenValidator.js');
router.post('/dataClient', ensureToken, (req, res)=>{
jwt.verify(req.token, 'token_key', async (err, data) => {
if(err) {
res.sendStatus(403);
//console.log('token error')
} else {
res.send('token ok')
}
})
});
readCustomers.js 包含
const { ensureToken } = require('../../libs/tokenValidator.js');
router.post('/dataClient', ensureToken, (req, res)=>{
jwt.verify(req.token, 'token_key', async (err, data) => {
if(err) {
res.sendStatus(403);
//console.log('token error')
} else {
res.send('token ok')
}
})
});
【讨论】: