node.js - 中间件中有没有更好的使用中间件的方法?

标签 node.js express passport.js

例如,我想创建一些使用 Passport 的中间件,但我不想在使用此自定义中间件的应用程序中要求 Passport。我相信我可以做到以下几点来实现这一目标。这合适吗?有更好的方法吗?

someModule.js

var express = require('express'),
    passport = require('passport');

exports.someMiddleware = function(app) {
  app.use(passport.initialize());
  app.use(passport.session());
  return function(req, res, next) {
    // Do something
    next();
  }
}

app.js

var express = require('express');

var someModule = require('./someModule');

app = express();

app.use(someModule.someMiddleware(app))

而不是......

someModule.js

var express = require('express'),
    passport = require('passport');

exports.someMiddleware = function(app) {
  return function(req, res, next) {
    // Do something
    next();
  }
}

app.js

var express = require('express'),
    passport = require('passport');

var someModule = require('./someModule');

app = express();

app.use(passport.initialize());
app.use(passport.session());
app.use(someModule.someMiddleware())

最佳答案

我建议使用嵌入式应用程序来保持代码组织良好且可重用。使嵌入式应用程序中的路由尽可能短,以便使用它们的主应用程序可以设置适当的基本路径。

module.js

var express = require('express');
var passport = require('passport');

var controller = module.exports = express();
controller.use(passport.initialize());
controller.use(passport.session());
// Login
controller.post('/', function (request, response, next) { /* ... */ });
// Logout
controller.del('/', function (request, response, next) { /* ... */ });

app.js

var app = express();
var controller = require('./controllers/module');

app.use('/authentication', controller);

关于node.js - 中间件中有没有更好的使用中间件的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21467351/

相关文章:

node.js - Kubernetes AWS Fargate (EKS) 持续终止 pod 托管 React 服务

node.js - 如何将 Nunjucks addfilter 函数放在 app.js 以外的 Express.js 文件中?

node.js - JS 文件更改后出现奇怪的 Ionic CLI 错误

node.js - 如何在 Sails 应用程序中禁用 CSRF?

node.js - 我需要在哪里加载用户数据 block 以及最好的方法是什么?

javascript - 使用ajax和快速路由重定向到新的url

node.js - 如何在基于nodejs的url上创建不同的 session ?

node.js - 如何增加 Node.js 中脚本的最大执行时间?

node.js - 如何在 NodeJS + Express 4 中获取 req.user.email

Node.js - 检查用户是否存在