迁移到Sails.js 0.12 - 中间件迁移

时间:2017-02-14 15:15:02

标签: javascript node.js sails.js

我正在迁移一个用0.10.5写成0.12.x的旧sails.js项目。 由于原始代码是很久以前写的,可能会有一些不符合要求的"代码我决定通过启动一个新的sails项目并慢慢迁移模型/控制器/服务来重新构建项目,同时只保留必要的策略和配置文件。

到目前为止,我设法让项目解除,现在我开始处理身份验证。理想情况下,我打算使用护照和jwt来取代现有的express-jwt。

我的旧配置/ http.js看起来像这样:

module.exports.http = {
    bodyParser: function() {
        //return require('body-parser')({limit: '900mb'});
        var opts = { limit:'50mb' };
        var fn;

        // Default to built-in bodyParser:
        fn = require('skipper');
        return fn(opts);
    },
    customMiddleware: function(app) {

        var bodyParser = require('body-parser');
        var expressJwt = require('../libs/express-jwt');
        var experssJwtConfig = require('./jwt.js').jwt;

        app.use(function(req, res, next) {
            res.setHeader("Access-Control-Allow-Origin", "*");
            next();
        });

        app.use('/api', expressJwt({secret: experssJwtConfig.secret}));

        app.use(bodyParser.json());
        app.use(bodyParser.urlencoded());

        if(process.env.NODE_ENV == 'development') {
            // just for local/development - serve static files      
        }
    }
}

如果我理解正确(我不熟悉堆栈),这段代码会覆盖默认的主体解析器(使用允许大文件的skipper - 这在bodyParser中指定),此外,更改使用的中间件:

  • 包含要添加Access-Control-Allow-Origin的中间件。

  • 对于' api'下的路线它调用express-jwt中间件,在这个实现中(不确定它是默认行为)查找令牌,然后将用户添加到请求对象(然后在大多数控制器中使用)。

  • 将正文解析器(body-parserjsonurlencode添加到中间件链。

我的问题是我是应该保持它或多或少相同,还是应该改变它?是否存在明显的反模式或安全风险?如果我使用队长,我是否需要身体解析器json / urlencode中间件?

我是否可以使用更标准的护照/ jwt代码实现可比流程?如果是这样,我可以用sails-auth实现这种堆栈,还是应该自己角色?

1 个答案:

答案 0 :(得分:1)

是的,您可以删除自定义中间件。最新模式更易于管理。首先,

  • Access-Control-Allow-Origin可以在config/cors.js

  • 中设置
  • 您可以使用passport-jwt模块以更加 sailsy 的方式使用sails-auth。并将逻辑拆分为services,使用policies来管理流程等。sails-auth的问题是,npm中的模块已在一年前发布。它有几个错误。 GitHub回购虽然有稳定的版本。

我在帆中制作了一个最小的auth服务器,您可以扩展其用于各种护照策略。服务器支持开箱即用的localbearerJWT策略。

Sails Auth Server