2017-02-14 1 views
0

0.10.5で作成された古いsails.jsプロジェクトを0.12.xに移行しています。 元のコードはずいぶん前に書かれていて、「準拠していない」コードがいくつかあるかもしれないので、新しい帆プロジェクトを開始し、モデル/コントローラ/サービスをゆっくりと移行してプロジェクトを再構築することに決めました。設定ファイル。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'のルートの場合、この実装では、デフォルトの動作ではないと思われるexpress-jwtミドルウェアが呼び出され、トークンが検索され、次にリクエストオブジェクトにユーザーが追加されますのコントローラ)。

  • ボディパーサー(body-parserjsonurlencodeをミドルウェアチェーンに追加します。

ここで私の質問は多かれ少なかれ同じにしておくべきかどうかですか?明らかなアンチパターンやセキュリティリスクはありますか?私がスキッパーを使用する場合、ボディパーサーjson/urlencodeミドルウェアが必要ですか?

もっと標準的なパスポート/ jwtコードを使用して同等のフローを達成できるでしょうか?もしそうなら、sails-authでこの種のスタックを達成できますか?

答えて

1

はい、カスタムミドルウェアを削除できます。最新のパターンは管理が簡単です。手始めに、

  • Access-Control-Allow-Originはあなたがsails-authモジュールを利用することによって、よりsailsy方法でpassport-jwtを使用することができますconfig/cors.js

  • に設定することができます。ロジックをservicesに分割し、policiesを使用してフローなどを管理します。sails-authの問題は、npmのモジュールが1年以上前に公開されていることです。それにはいくつかのバグがあります。 GitHubリポジトリには安定版があります。

私は帆で裸の最小認証サーバーを作成しました。このサーバーは、さまざまなパスポート戦略に拡張できます。サーバーは、local,bearer,JWTという戦略をサポートしています。

Sails Auth Server

+0

うわー、それは非常に包括的な例です - :-)それを分類するために私にしばらく時間がかかります。私はあなたがそれを使用したpackage.jsの帆 - authを参照してください?簡単な見直しから、私はパスポートがどのように接続されているのか分かりません...このすべてが一緒に働いていることを理解するのに役立つリソースはありますか? –

+0

'UserController.js'、' AuthController.js'、 'Services/passport.js'、' Services/protocols'はすべてsails-authファイルです。 npmのモジュールは古くなっているので、プロジェクトに直接追加する必要がありました。役立つ場合はReadmeを更新できます。 – MjZac

+0

私は実際に帆authを試みたが、それは何も変更しないようだった。 readmeに手動でインストール手順を追加することができますか、またはいくつかのハウツー情報を追加することができます... –

関連する問題