gpt4 book ai didi

javascript - Nodejs Express 中的 DRY

转载 作者:搜寻专家 更新时间:2023-11-01 00:07:08 24 4
gpt4 key购买 nike

我在 Node.js 中遵循 DRY 时遇到了一些问题。如何在不同的路由上使用 csrf 而无需在需要 csrf token 的不同地方复制粘贴代码?

app.js(主入口点)

var csrf = require('csurf');
var csrfProtection = csrf({cookie: false});

//routes

var route1 = require('./app/routes/r1');
app.use('/', route1);

var route2 = require('./app/routes/r2');
app.use('/dashboard', r2);

我想在两条路由上都使用 csrfProtection,但不确定如何在不在每个文件 r1.js 和 r2.js 中添加下面的代码的情况下执行此操作

var csrf = require('csurf');
var csrfProtection = csrf({cookie: false});

routes.get('/login', csrfProtection, function(req,res){
res.render('login', {csrfToken: req.csrfToken()});
});

最佳答案

好的。我知道了。需要在 app.js

中重构我的代码
var csrf = require('csurf');
var csrfProtection = csrf({cookie: false});

var route1 = express.Router();
require('./app/routes/r1')(route1, csrfProtection);
app.use('/', route1);

var route2 = express.Router();
require('./app/routes/r2')(route2, csrfProtection);
app.use('/dashboard', route2);

然后在我的 route (r1.js)

module.exports = function(router, csrfProtection){
router.get('/login', csrfProtection, function(req,res){
res.render('login', {csrfToken: req.csrfToken()});
});
}

我也可以在我的其他 route 使用它。

关于javascript - Nodejs Express 中的 DRY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32034388/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com