【问题标题】:DRY in Nodejs ExpressNodejs Express 中的 DRY
【发布时间】:2015-11-09 03:29:47
【问题描述】:

我在 Node.js 中跟踪 DRY 有点问题。如何在不同的路线上使用 csrf 而无需在需要 csrf 令牌的不同地方复制粘贴代码?

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()});
});

【问题讨论】:

    标签: javascript node.js csrf


    【解决方案1】:

    好的。我得到了它。需要在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);
    

    然后在我的路线中 (r1.js)

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

    我也可以在我的其他路线中使用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-04
      • 2011-04-12
      相关资源
      最近更新 更多