2017-02-14 156 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,但它似乎沒有做任何改變。如果您可以在自述文件中添加一個手動安裝步驟或一些額外的指導性信息,那將是非常好的... –