目次
Casbin エンフォーサを作成するには、パラメータとしてモデル ファイルとポリシー ファイルが必要です:
import { newEnforcer } from 'casbin';const enforcer = await newEnforcer('basic_model.conf', 'basic_policy.csv');
ログイン後にコピー
" >始めましょうCasbin エンフォーサを作成するには、パラメータとしてモデル ファイルとポリシー ファイルが必要です:
import { newEnforcer } from 'casbin';const enforcer = await newEnforcer('basic_model.conf', 'basic_policy.csv');
ログイン後にコピー

Node.js Casbin について学ぶ

Aug 19, 2020 am 10:16 AM
node.js

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
ログイン後にコピー

ファイルの代わりに DB 内のポリシーを使用してエンフォーサを初期化することもできます。詳細については、「アダプタ」を参照してください。

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 はデータを読み取ることができます1

bob can write data2
    長すぎる単一行の設定の場合は、最後に '' を追加して改行することもできます:
# Matchers[matchers]m = r.sub == p.sub && r.obj == p.obj \ 
  && r.act == p.act
ログイン後にコピー
  • さらに、ABAC の場合は、次のようにすることができます。 Casbin golang バージョンを使用してください。次の操作を試してください (jCasbin と Node-Casbin ではまだサポートされていません):
    # Matchers[matchers]m = r.obj == p.obj && r.act == p.act || r.obj in ('data2', 'data3')
    ログイン後にコピー
  • ただし、配列の長さが 1

    より大きいことを確認する必要があります。そうでない場合は、パニックを引き起こします。

    その他の操作については、govaluate をチェックしてください。 プログラミング関連の知識について詳しくは、

    プログラミング入門

    をご覧ください。 !

    以上がNode.js Casbin について学ぶの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

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

    AI Clothes Remover

    AI Clothes Remover

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

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    AI Hentai Generator

    AI Hentai Generator

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

    ホットツール

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    SublimeText3 中国語版

    SublimeText3 中国語版

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

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    SublimeText3 Mac版

    SublimeText3 Mac版

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

    Nodeのメモリ制御に関する記事 Nodeのメモリ制御に関する記事 Apr 26, 2023 pm 05:37 PM

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

    Node V8 エンジンのメモリと GC の詳細な図による説明 Node V8 エンジンのメモリと GC の詳細な図による説明 Mar 29, 2023 pm 06:02 PM

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

    最適な Node.js Docker イメージを選択する方法について話しましょう。 最適な Node.js Docker イメージを選択する方法について話しましょう。 Dec 13, 2022 pm 08:00 PM

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

    Node の File モジュールについて詳しく説明しましょう Node の File モジュールについて詳しく説明しましょう Apr 24, 2023 pm 05:49 PM

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

    Node.js 19 が正式リリースされました。その 6 つの主要な機能についてお話しましょう。 Node.js 19 が正式リリースされました。その 6 つの主要な機能についてお話しましょう。 Nov 16, 2022 pm 08:34 PM

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

    Node.js の GC (ガベージ コレクション) メカニズムについて話しましょう Node.js の GC (ガベージ コレクション) メカニズムについて話しましょう Nov 29, 2022 pm 08:44 PM

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

    Nodeのイベントループについて話しましょう Nodeのイベントループについて話しましょう Apr 11, 2023 pm 07:08 PM

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

    ノードがnpmコマンドを使用できない場合はどうすればよいですか? ノードがnpmコマンドを使用できない場合はどうすればよいですか? Feb 08, 2023 am 10:09 AM

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

    See all articles