Node.jsアプリケーションの承認アプローチとデザインパターン[クローズ]


80

社内のエンタープライズソフトウェアプラットフォーム用に複数ページの管理インターフェイスを構築しています。さまざまなAPI、データベースクエリ、シェルスクリプトを結び付けるグルーロジックをたくさん考えてみてください。

認証には、node.js、Expressフレームワーク(jadeテンプレートを含む)、およびLDAPを使用します。

ノードアプリケーションでの承認のデザインパターンとベストプラクティスに関する情報を見つけるのに苦労しています。できれば、ユーザーがそのアプローチとそのケアと給餌に精通しているので、ロールベースのモデルを使用したいと思います。

私はnode.jsを初めて使用するので、モジュールや人気のあるブログ投稿をすでに見たことがあると思い込まないでください。情報が豊富で、どこを見ればいいのかわからない可能性があります。

あなたが提供することができるどんな情報にも前もって感謝します!

回答:


63

最初の質問のとおり、NodeJに承認プロセスを実装する必要があります。NodeJのAPIの数を調べて使用しました。エンタープライズアプリケーションには次のAPIを使用したいと思います。

  • 認証の場合:AngularJSでSPA(フロントエンド)を開発する場合は、PassportまたはSatellizer

  • 承認の場合:ACL。メソッドとRESTAPIの役割ベースのセキュリティ。RABC、ABACも使用したい場合は、casbinについて言及したいと思います。

次に、NodeJでの実装と開発のアプローチが必要です。

  • NodeJの簡単で私のお気に入りのデザインパターンとフレームワーク:MVCフレームワーク、SailsJs。すぐに使えるモジュラーアーキテクチャ。コード管理は長期的には簡単です(エンタープライズアプリケーションの最も実用的な要件)。メンテナンスが簡単。SailsJsはSocket.ioで事前構成されており、これを使用して、プロジェクト内でリアルタイムモジュール、ウィジェット、チャットウィジェットを作成できます。

  • Express Expressを使用して、独自のカスタムMVCプロジェクト構造を設計できます。これも人気があり、堅牢です。あなたはヨーマンで同じの人気のある種子プロジェクトを見つけることができます

  • キャッシュまたはセッション層としてのRedis。クラウド上のアプリケーションをn番目のインスタンスにスケーリングすることを妨げないため、個別のキャッシュまたはセッション層を使用することをお勧めします。

  • RedisSocket.ioを使用して、ジオロケーション、ユーザープレゼンス(オンライン/オフライン)、チャット、プッシュ通知などのリアルタイム機能を作成できます。

  • ORM:ウォーターライン。その簡単なクエリアプローチのために。これは、SailsJsの組み込みのデフォルトのORMでもあります。SailsJsを使用していない場合は、Sequelizejsを使用することもできます。DBプロバイダーが提供するネイティブコネクタを使用することをお勧めします。

  • データベース:要件に応じて。Waterline ORMは、PostgreSQL、MySQL、MongoDBなどをサポートしています。

  • 私のお気に入りのビューエンジン:EJS。プレゼンテーション層を開発するために新しいことを学ぶ必要はありません。これはSailsJsの組み込みのデフォルトのビューエンジンでもあり、それが私がSailsJsのファンである理由です。

NodeJでエンタープライズアプリケーションを作成するための重要な情報をすべて網羅したと思います。上記のパッケージが最適だとは言いませんが、共同で、あらゆるエンタープライズシナリオに最適に適合させることができます。他にも既知のパッケージがあり、独自の要件に応じて使用できます。


2
waterlineとsails.js + 1
Travis Webb

@kosnkovこれらのほとんどは問題ありません。Expressのより強力な代替手段についてはHapiJSを、Waterlineの代替手段についてはSequelizeを確認してください。私の意見では、SailsJSはやり過ぎだと思います。RAILSまたはDjangoのバックグラウンドを持っている場合は、Express / HapiとWaterline / Sequelizeだけでうまくいくのに十分な概念を理解する必要があります。帆よりもはるかに軽量です。私はHapi / Sequelizeを選びます。
damusix 2018年

素敵なリスト。ブルートフォース保護についての小さなメモを追加するのも良いでしょう。rate-limiter-flexibleのようなパッケージがぴったりです。
Animir

15

開始するためのいくつかの情報は次のとおりです。

それが開始を容易にすることを願っています。


ありがとうございました!それらのリンクをチェックします。エクスプレスルートミドルウェアの例は、私が持っているユースケースに非常に近いようです
Dave Snigier 2012年

53
あなたの答えに承認という言葉が含まれていないのは不思議です:)
redben 2013年

1
完璧な答え、私を大いに助けてくれました。単語の承認がなくても:)
ボーディン氏2014年


1
@ Green-github.com / expressjs
express

3

もう1つのオプションは、MongoDBと非常によく統合されたCASLを使用することです。また、CASLに基づく認証をexpressjsアプリに統合する方法に関する記事があります-https //medium.com/@sergiy.stotskiy/authorization-with-casl-in-express-app-d94eb2e2b73b


0

Node-Authorizationも良い候補だと言わなければなりません。このアイデアはSAP(ERPプロバイダー)から借用したものであり、オブジェクト指向の承認です。また、PassportやExpressなどの他のフレームワークの付属品としても使用できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.