2017-02-14 84 views
0

我正在迁移一个旧的sails.js项目,它是用0.10.5写入到0.12.x. 由于原始代码是很久以前编写的,并且可能有一些“不符合”代码,我决定通过开始一个新的sails项目并慢慢迁移模型/控制器/服务,同时只保留必要的策略来重新构建项目,并且配置文件。迁移到Sails.js 0.12 - 中间件迁移

到目前为止,我设法让项目解除,现在我开始处理认证。理想情况下,我打算采用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  
     } 
    } 
} 

如果我理解正确的话(我不能很好地在堆栈精通)这个代码覆盖默认体解析器(使用船长允许大文件 - 这在bodyParser指定),并且另外,改变用于中间件:

  • 包括中间件添加Access-Control-Allow-Origin

  • 对于下“API”路线它调用快车,智威汤逊中间件在此实现(不知道它的默认行为)查找令牌,然后将用户添加到请求对象(然后在最常用的控制器)。

  • 再添体解析器的(body-parserjsonurlencode到中间件链。

我的问题在这里我是否应该把它或多或少相同或者我应该改变它呢?是否存在明显的反模式或安全风险?如果我使用skipper,我需要body parser json/urlencode中间件吗?

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

回答

1

是的,您可以删除自定义中间件。最新的模式更容易管理。对于初学者来说,

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

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

我已经在帆最低限度auth服务器,您可以扩展各种护照策略。该服务器支持开箱即用的local,bearer,JWT策略。

Sails Auth Server

+0

哇,那是相当全面的例子 - 将带我一段时间通过它进行排序:-)。我没有看到package.js中的sails-auth使用过吗?从简短的回顾,我不知道护照是如何连接起来的......有没有任何资源可以帮助理解所有这些如何协同工作? –

+0

UserController.js,AuthController.js,Services/passport.js,Services/protocols都是sails-auth文件。由于npm中的模块已经过时,我不得不将其直接添加到项目中。如果有帮助,我可以更新自述文件。 – MjZac

+0

我其实尝试了sails-auth,但它似乎没有做任何改变。如果您可以在自述文件中添加一个手动安装步骤或一些额外的指导性信息,那将是非常好的... –