Node.js Casbin について学ぶ
nodejs チュートリアル】
概要
Casbin は、強力かつ効率的なオープンソースのアクセス制御フレームワークであり、その権限管理メカニズムが複数のアクセス制御モデルをサポートしています。キャスビンとは何ですか?
Casbin は次のことができます:
- カスタム リクエスト形式をサポートします。デフォルトのリクエスト形式は {subject, object, action} です。 。
- これには、アクセス制御モデル モデルとポリシー ポリシーという 2 つの中心的な概念があります。
- RBAC でのマルチレベルのロール継承のサポートサブジェクトだけでなく、リソースもロールを持つことができます。
- root や管理者など、認可ポリシーによる制限を受けることなくあらゆるリソースにアクセスできるスーパー ユーザーをサポートします。
- keyMatch などのさまざまな組み込み演算子をサポートし、/foo/bar を /foo にマッピングできるなど、パスベースのリソースの管理を容易にします*
Casbin は次のことはできません:
# ID 認証 (つまり、ユーザーのユーザー名とパスワードの検証)。casbin はアクセス制御のみを担当します。 ID 認証を担当する他の特殊なコンポーネントがあり、その後 casbin がアクセス制御を実行する必要があり、この 2 つは連携して動作します。- ユーザーリストまたはロールリストを管理します。 Casbin は、プロジェクト自体がユーザーとロールのリストを管理することがより適切であると考えています。通常、ユーザーはパスワードを持っていますが、Casbin はパスワードを保存するコンテナとして設計されていません。代わりに、ユーザーとロールの間のマッピング関係を RBAC スキームに保存します。
#ドキュメントcasbin.org/docs/en/overview
インストール# NPMnpm install casbin --save# Yarnyarn add casbin
ログイン後にコピー
# NPMnpm install casbin --save# Yarnyarn add casbin
始めましょうCasbin エンフォーサを作成するには、パラメータとしてモデル ファイルとポリシー ファイルが必要です: import { newEnforcer } from 'casbin';const enforcer = await newEnforcer('basic_model.conf', 'basic_policy.csv');
ログイン後にコピー
ファイルの代わりに DB 内のポリシーを使用してエンフォーサを初期化することもできます。詳細については、「アダプタ」を参照してください。
import { newEnforcer } from 'casbin';const enforcer = await newEnforcer('basic_model.conf', 'basic_policy.csv');
const sub = 'alice'; // 想要访问资源的用户。const obj = 'data1'; // 将要访问的资源。const act = 'read'; // 用户对资源执行的操作。const res = await enforcer.enforce(sub, obj, act);if (res) { // 允许 alice 读取数据1} else { // 拒绝请求,显示错误}
node-casbin
は実行時の権限管理用の API も提供します。たとえば、次のようにユーザーに割り当てられたすべてのロールを取得できます。 #const roles = await enforcer.getRolesForUser('alice');
その他の使用方法については、Management API と RBAC API を参照してください。
Casbin では、アクセス制御モデルは PERM (ポリシー、エフェクト、リクエスト、マッチャー) に基づいてファイルに抽象化されます。 。したがって、プロジェクトの承認メカニズムの切り替えまたはアップグレードは、構成を変更するのと同じくらい簡単です。利用可能なモデルを組み合わせて、独自のアクセス制御モデルをカスタマイズできます。たとえば、RBAC ロールと ABAC 属性を 1 つのモデルに含めて、一連のポリシー ルールを共有できます。 Casbin の最も基本的で単純なモデルは ACL です。 ACL の CONF モデルは次のとおりです:
# Request definition[request_definition]r = sub, obj, act # Policy definition[policy_definition]p = sub, obj, act # Policy effect[policy_effect]e = some(where (p.eft == allow))# Matchers[matchers]m = r.sub == p.sub && r.obj == p.obj && r.act == p.act
ACL モデルのポリシーの例は次のとおりです:
p, alice, data1, read p, bob, data2, write
これは、次のことを意味します:
alice はデータを読み取ることができます1bob can write data2
- 長すぎる単一行の設定の場合は、最後に '' を追加して改行することもできます:
# Matchers[matchers]m = r.sub == p.sub && r.obj == p.obj \ && r.act == p.act
# Matchers[matchers]m = r.obj == p.obj && r.act == p.act || r.obj in ('data2', 'data3')
より大きいことを確認する必要があります。そうでない場合は、パニックを引き起こします。
その他の操作については、govaluate をチェックしてください。 プログラミング関連の知識について詳しくは、
プログラミング入門をご覧ください。 !
以上がNode.js Casbin について学ぶの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









ノンブロッキングおよびイベント駆動に基づいて構築されたノード サービスには、メモリ消費量が少ないという利点があり、大量のネットワーク リクエストの処理に非常に適しています。大量のリクエストを前提として、「メモリ制御」に関する問題を考慮する必要があります。 1. V8 のガベージ コレクション メカニズムとメモリ制限 Js はガベージ コレクション マシンによって制御されます

この記事では、NodeJS V8 エンジンのメモリとガベージ コレクター (GC) について詳しく説明します。

ノード用の Docker イメージの選択は些細なことのように思えるかもしれませんが、イメージのサイズと潜在的な脆弱性は、CI/CD プロセスとセキュリティに大きな影響を与える可能性があります。では、最適な Node.js Docker イメージを選択するにはどうすればよいでしょうか?

ファイル モジュールは、ファイルの読み取り/書き込み/開く/閉じる/削除の追加など、基礎となるファイル操作をカプセル化したものです。ファイル モジュールの最大の特徴は、すべてのメソッドが **同期** と ** の 2 つのバージョンを提供することです。 asynchronous**、sync サフィックスが付いているメソッドはすべて同期メソッドであり、持たないメソッドはすべて異種メソッドです。

Node 19 が正式リリースされましたので、この記事では Node.js 19 の 6 つの主要な機能について詳しく説明します。

Node.js はどのように GC (ガベージ コレクション) を行うのでしょうか?次の記事で詳しく説明します。

イベント ループは Node.js の基本的な部分であり、メイン スレッドがブロックされていないことを確認することで非同期プログラミングが可能になります。イベント ループを理解することは、効率的なアプリケーションを構築するために重要です。次の記事では、Node のイベント ループについて詳しく説明します。お役に立てれば幸いです。

ノードが npm コマンドを使用できない理由は、環境変数が正しく設定されていないためです。解決策は次のとおりです: 1. 「システムのプロパティ」を開きます; 2. 「環境変数」->「システム変数」を見つけて、環境を編集します。変数; 3.nodejs フォルダーの場所を見つけます; 4.「OK」をクリックします。
