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

モデル ストレージ

ポリシーとは異なり、モデルはロードすることができますので、保存することはできません。 モデルは動的なコンポーネントではなく、実行時に変更すべきではないからです。 そのため、モデルをストレージに保存するための API は実装していません。

しかし、良いニュースは、静的または動的にモデルをロードする3つの同等の方法を提供していることです。

.CONFファイルからモデルを読み込む

これはCasbinを使用する最も一般的な方法です。 初心者には理解しやすく、Casbinチームに助けを求めるときに共有するのに便利です。

CONF ファイル の内容例/rbac_model.conf:

[request_definition]
r = sub, obj, act

[policy_definition]
p = sub, obj, act

[role_definition]
g = _, _

[policy_effect]
e = some(where (p.eft == allow))

[matchers]
m = g(r.sub, p.sub) && r.obj == p.obj && r.act == p.act

次に、次のようにモデルファイルを読み込むことができます。

e := casbin.NewEnforcer("examples/rbac_model.conf", "examples/rbac_policy.csv")

コードからモデルを読み込む

モデルは、 .CONF ファイルを使用する代わりにコードから動的に初期化することができます。RBAC モデルの例を次に示します。

import (
    "github.com/casbin/casbin/v2"
    "github.com/casbin/casbin/v2/model"
    "github.com/casbin/v2/persist/file-adapter"
)

// Goコードからモデルを初期化する
m := model.NewModel()
m.AddDef("r", "r", "sub, obj, act")
m.AddDef("p", "p", "sub, obj, act")
m.AddDef("g", "g", "_, _")
m.AddDef("e", "e", "some(where (p.eft == allow))")
m.AddDef("m", "m", "g(r.sub, p.sub) && r.obj == p.obj && r.act == p.act")

// Load the policy rules from the .CSV file adapter.
// ファイルを避けるためにアダプターに交換してください。
a := fileadapter.NewAdapter("examples/rbac_policy.csv")

// 執行者を作成します。
e := casbin.NewEnforcer(m, a)

文字列からモデルを読み込む

または、マルチライン文字列からモデルテキスト全体を読み込むこともできます。 この方法のための良い点は、モデルファイルを維持する必要がないということです。

import (
    "github.com/casbin/casbin/v2"
    "github.com/casbin/v2/model"
)

// Initialize the model from a string
text :=
`
[request_definition]
r = sub, obj, act

[policy_definition]
p = sub, obj, act

[role_definition]
g = _, _

[policy_effect]
e = some(where (p.eft == allow))

[matchers]
m = g(r.sub, p.sub) && r.obj == p.obj && r.act == p.act
`
m, _ := model.NewModelFromString(text)

// Load the policy rules from the .CSV file adapter.
// ファイルを避けるためにアダプターに交換してください。
a := fileadapter.NewAdapter("examples/rbac_policy.csv")

// 執行者を作成します。
e := casbin.NewEnforcer(m, a)
← スーパー管理者ポリシーストレージ →
  • .CONFファイルからモデルを読み込む
  • コードからモデルを読み込む
  • 文字列からモデルを読み込む
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