javascript - 在快速路由器和中间件之间传递数据
问题描述
我正在尝试编写快速中间件来检查授权标头中 JWT 的有效性。这看起来很简单,但我不希望它在所有路由上运行(例如,不在登录/注册路由器上)。
所以,我想在路由器声明中指定一个路由应该需要一个有效的令牌。例如像这样的东西
const controllers = require('../controllers');
module.exports = (app) => {
app.post('/auth/signup', controllers.auth.signup.post);
app.post('/auth/login', controllers.auth.login.post);
app.get('/teams', controllers.teams.get, {requiresToken:true});
};
除了 .post 和 .get 不接受第三个参数,控制器只接受 (req,res,next) 参数,所以我看不到为每条路由传递起始数据的方法。我确定我错过了一些简单的东西
解决方案
这就是我创建中间件将数据传递到的方式
module.exports = function(options) {
return function (req, res, next) {
//write your code here
// here you can access options variable
console.log(options.data)
next();
}
}
你怎么称呼那个中间件是这样的
app.use(middleware({'data' : 'Test'}));
在路线基础上使用
app.post('/userRegistration', middleware({'data' : 'Test'}), (req, res) => {});
推荐阅读
- python - 有没有办法直接在keras中操纵张量?
- python - 更新列表时 QlistView 更新
- python - 通过 Python 将 JSON 转换为 CSV
- vue.js - 带有href的VueJS路由器链接无法正常工作
- azure - 有没有办法向 Azure 资源组添加功能?
- ios - 使用 UIBezierPath 通过 for 循环添加多条线时,线的粗细不统一?
- android - Android TextView:如何在输入文本时动态更改布局
- python - 使用 python 实现 ACL 自动化
- c# - 不返回数组的 Cosmos sql 查询
- html - 限制段落文本大于其标题的宽度