【问题标题】:How to use node modules and require with Express 4 router如何使用节点模块并要求 Express 4 路由器
【发布时间】:2014-09-17 00:07:57
【问题描述】:

我使用 express 4 生成器来启动节点项目。它使用路由器,我有以下内容:

// ./routes/index.js

var express = require('express');
var router = express.Router();

router.get('/', function(req, res) {
  res.render('index', { title: 'Express' });
});

module.exports = router;

现在,我想在其中添加以下路线。

app.post('/login', function(req, res, next) {
    passport.authenticate('local', function(err, user, info) {
        if (err) { return next(err) }
        if (!user) {
            req.flash('error', info.message);
            return res.redirect('/login')
        }
        req.logIn(user, function(err) {
            if (err) { return next(err); }
            return res.redirect('/');
        });
    })(req, res, next);
});

我认为它需要访问apppassport。你能告诉我路由文件index.js如何访问passport,我应该从这个文件index.jsmodule.export做什么?

【问题讨论】:

    标签: javascript node.js express url-routing node-modules


    【解决方案1】:

    app.post 可以替换为router.post,因为您已经在此脚本中获得了路由器模块。您必须做的更改是在此页面中要求 passport 模块并使用它。

    可能是这样的

    var express = require('express');
    var passport = require('passport');
    var router = express.Router();
    
    router.get('/', function(req, res) {
      res.render('index', { title: 'Express' });
    });
    
    router.post('/login', function(req, res, next) {
        passport.authenticate('local', function(err, user, info) {
            if (err) { return next(err) }
            if (!user) {
                req.flash('error', info.message);
                return res.redirect('/login')
            }
            req.logIn(user, function(err) {
                if (err) { return next(err); }
                return res.redirect('/');
            });
        })(req, res, next);
    });
    
    module.exports = router;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-27
      • 2015-09-03
      • 1970-01-01
      • 1970-01-01
      • 2019-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多