Casbin

Casbin

  • ドキュメント
  • API
  • エディター
  • IDE プラグイン
  • Single Sign-On (SSO)
  • フォーラム
  • ヘルプ
  • ブログ
  • Pricing
  • Contact Sales
  • Languages icon日本語
    • English
    • 中文
    • 한국어
    • Русский
    • Français
    • Deutsch
    • 翻訳に協力する
  • GitHub

›モデル

基本

  • 概要
  • はじめよう
  • 仕組み
  • チュートリアル

モデル

  • サポートされるモデル
  • モデルの構文
  • エフェクト
  • 関数
  • RBAC
  • RBAC with Pattern
  • ドメイン付きRBAC
  • Casbin RBAC v.s. RBAC96
  • ABAC
  • 優先モデル
  • スーパー管理者

ストレージ

  • モデル ストレージ
  • ポリシーストレージ
  • ポリシーサブセットの読み込み

拡張

  • Enforcers
  • アダプター
  • Watchers
  • 派遣者
  • ロールマネージャー
  • ミドルウェア
  • GraphQL Middlewares
  • Cloud Native Middlewares

API

  • API の概要
  • 管理API
  • RBAC API
  • Domains API による RBAC
  • RoleManager API
  • データ権限

高度な使い方

  • マルチスレッド
  • Benchmarks
  • パフォーマンス最適化
  • Kubernetes の承認
  • Envoyによるサービスメッシュの承認

管理

  • 管理者ポータル
  • カスビンサービス
  • ログとエラー処理
  • フロントエンドの使用法

エディター

  • オンラインエディター
  • IDE プラグイン

もっと見る

  • Adopters
  • コントリビューション
  • プライバシーポリシー
  • 利用規約
Translate

関数

マッチャー内の関数

マッチャー内の関数を指定して、よりパワフルにすることもできます。 組み込み関数を使用したり、独自の関数を指定したりできます。 すべての組み込み関数はそのようなフォーマットをとります( keyGet と keyGet2 を除く):

bool function_name(string arg1, string arg2)

arg1 が arg2 と一致するかどうかを返します。

keyGet and keyGet2 will return the string which matching the wildcard, and return "" if nothing was matched.

サポートされている組み込み関数は次のとおりです。

関数arg1arg2例
keyMatch/alice_data/resource1 のような URL パスURL パスまたは * パターン。 /alice_data/*keymatch_model.conf/keymatch_policy.csv
keyGet/alice_data/resource1 のような URL パスURL パスまたは * パターン。 /alice_data/*keyget_model.conf/keymatch_policy.csv
keyMatch2/alice_data/resource1 のような URL パスURL パスまたは : /alice_data/:resource のようなパターンkeymatch2_model.conf/keymatch2_policy.csv
keyGet2/alice_data/resource1 のような URL パスURL パスまたは : /alice_data/:resource のようなパターンkeyget2_model.conf/keymatch2_policy.csv
keyMatch3/alice_data/resource1 のような URL パスURL パスまたは {} /alice_data/{resource}のようなパターンhttps://github.com/casbin/blob/277c1a2b85698272f764d71a94d2595a8d425915/util/builtin_operators_test.go#L171-L196
keyMatch4/alice_data/123/book/123 のURLパスURL パスまたは {} パターンのような /alice_data/{id}/book/{id}https://github.com/casbin/blob/277c1a2b85698272f764d71a94d2595a8d425915/util/builtin_operators_test.go#L208-L222
正規表現一致すべての文字列正規表現のパターンですkeymatch_model.conf/keymatch_policy.csv
ipMatch192.168.2.123 のようなIP アドレス192.168.2.0/24 のようなIPアドレスまたはCIDRipmatch_model.conf/ipmatch_policy.csv
globMatch/alice_data/resource1 のようなパス/alice_data/* のようなグローブパターンhttps://github.com/casbin/blob/277c1a2b85698272f764d71a94d2595a8d425915/util/builtin_operators_test.go#L426-L466

上記の関数の詳細は https://github.com/casbin/casbin/blob/master/util/builtin_operators_test.go

カスタマイズした機能を追加する方法

まず、関数を準備します。 いくつかのパラメータを取り、boolを返します。

func KeyMatch(key1 string, key2 string) bool {
    i := strings.Index(key2, "*")
    if i == -1 {
        return key1 == key2
    }

    if len(key1) > i {
        return key1[:i] == key2[:i]
    }
    return key1 == key2[:i]
}

次に、 interface{} タイプでラップします。

func KeyMatchFunc(args ...interface{}) (interface{}, error) {
    name1 := args[0](string)
    name2 := args[1](string)

    return (bool)(KeyMatch(name1, name2)), nil
}

最後に、Casbin enforcerにこの関数を登録します。

e.AddFunction("my_func", KeyMatchFunc)

これで、モデルCONFの関数を次のように使用できます。

[matchers]
m = r.sub == p.sub && my_func(r.obj, p.obj) && r.act == p.act
← エフェクトRBAC →
  • マッチャー内の関数
  • カスタマイズした機能を追加する方法
Casbin
Docs
Getting StartedManagement APIRBAC APIMiddlewares
Community
Who's using Casbin?Stack Overflow
Casbin          jCasbin
Node-Casbin   PHP-CasbinPyCasbin          Casbin.NETCasbin-CPP        Casbin-RS
Follow @casbinHQ
Copyright © 2022 Casbin Organization