要求しているユーザーと要求されたリソースとの関係に基づいて承認を必要とするアプリケーションがあります。アクセスの詳細は、要求されるリソースにカプセル化されます。
ルートを取りましょうPATCH /articles/1
: 記事には著者/所有者と、記事を更新するためのアクセス権を持つ一連の編集者がいます。要求しているユーザーは認証されており、作成者または編集者の 1 人である可能性があります。それ以外の場合、アクセスは拒否されます。
--
私には2つのアイデアがあります:
ミドルウェアでの承認:
これは、コントローラーがリソースを集約する前に、ミドルウェアがリソースを必要とすることを意味します。ただし、場合によっては (MongoDB 集約フレームワークを使用する場合など)、コントローラーがリソースを再利用できず、データベースへの別のラウンドトリップが必要になることがあります。コントローラーでの承認:
リソースが利用可能/集約されるとすぐに、コントローラーで承認を実行できます。しかし、これにより、承認のこの部分を、ミドルウェアとして既に導入している認証および役割ベースのアクセス制御から切り離すことができます。
個人的には、ミドルウェア アプローチの方が理にかなっていると思いますが、データベースは別の PaaS によってホストされるため、同じデータ センター内であっても、ある程度の遅延が発生する可能性があります。
また、関連するリソース (コメントなど) が要求された場合はどうなるでしょうか? これには、コメントからアクセスの詳細が保存されている記事への特定のロジックが含まれます。そして、私の認証ミドルウェアの一般性がはるかに低くなります。
--
他に利用可能なオプションはありますか?
--
このアプリケーションはKoaを使用していますが、その概念はおそらく、Expressなど、ミドルウェアをサポートする他のすべてのフレームワークに適用できます。
認証や、たとえば によって提供される従来の役割ベースのアクセスについて質問しているわけではないことに注意してくださいconnect-roles
。