Casbin

Casbin

  • Docs
  • API
  • Editor
  • Casdoor
  • Forum
  • OA
  • Trend
  • Help
  • Blog
  • Languages iconEnglish
    • 中文
    • 한국어
    • Русский
    • Français
    • 日本語
    • Help Translate
  • GitHub

›Extensions

The Basics

  • Overview
  • Get Started
  • How it Works
  • Tutorials

Model

  • Supported Models
  • Syntax for Models
  • Function
  • RBAC
  • RBAC with Domains
  • Casbin RBAC v.s. RBAC96
  • ABAC
  • Priority Model

Storage

  • Model Storage
  • Policy Storage
  • Policy Subset Loading

Extensions

  • Adapters
  • Watchers
  • Dispatchers
  • Role Managers
  • Middlewares

API

  • API tutorial
  • Management API
  • RBAC API
  • RoleManager API
  • Data-permissions

Advanced Usage

  • Multi-threading
  • Benchmarks
  • Performance Optimization

Management

  • Admin Portal
  • Casbin Service
  • Log & Error Handling
  • Frontend Usage

Editor

  • Online Editor
  • IDE Plugins

More

  • Our Adopters
  • Privacy Policy
  • Terms of Service
Edit

Watchers

We support to use distributed messaging systems like etcd to keep consistence between multiple Casbin enforcer instances. So our users can concurrently use multiple Casbin enforcers to handle large number of permission checking requests.

Similar to policy storage adapters, we don't put watcher code in the main library. Any support for a new messaging system should be implemented as a watcher. A complete list of Casbin watchers is provided as below. Any 3rd-party contribution on a new watcher is welcomed, please inform us and I will put it in this list:)

Go
Java
Node.js
Python
.NET
WatcherTypeAuthorDescription
Etcd WatcherKV storeCasbinWatcher for etcd
NATS WatcherMessaging systemSolutoWatcher for NATS
ZooKeeper WatcherKV storeGrepsrWatcher for Apache ZooKeeper
Redis WatcherKV store@billcobblerWatcher for Redis
NATS, RabbitMQ, GCP Pub/Sub, AWS SNS & SQS, Kafka, InMemoryMessaging System@rusenaskWatcher based on Go Cloud Dev Kit that works with leading cloud providers and self-hosted infrastructure
RocketMQ WatcherMessaging system@fmyxyzWatcher for Apache RocketMQ
WatcherTypeAuthorDescription
Etcd AdapterKV store@mapleafgoWatcher for etcd
WatcherTypeAuthorDescription
Etcd WatcherKV storeCasbinWatcher for etcd
Redis WatcherKV storeCasbinWatcher for Redis
Pub/Sub WatcherMessaging systemCasbinWatcher for Google Cloud Pub/Sub
Postgres WatcherDatabaseMatteo CollinaWatcher for PostgreSQL
WatcherTypeAuthorDescription
Redis WatcherKV storeScienceLogicWatcher for Redis
PostgreSQL WatcherDatabaseCasbinWatcher for PostgreSQL
WatcherTypeAuthorDescription
Redis WatcherKV store@SbouWatcher for Redis

WatcherEx

In order to support incremental synchronization between multiple instances, we provide the WatcherEx interface. We hope it can notify other instances when the policy changes, but there is currently no implementation of WatcherEx. We recommend that you use dispatcher to achieve this.

Compared with Watcher interface, with implementing WatcherEx what kind of update action can be distinguished, etc AddPolicy, RemovePolicy, etc.

WatcherEx Apis:

apidescription
SetUpdateCallback(func(string)) errorSetUpdateCallback sets the callback function that the watcher will call, when the policy in DB has been changed by other instances. A classic callback is Enforcer.LoadPolicy().
Update() errorUpdate calls the update callback of other instances to synchronize their policy. It is usually called after changing the policy in DB, like Enforcer.SavePolicy(), Enforcer.AddPolicy(), Enforcer.RemovePolicy(), etc.
Close()Close stops and releases the watcher, the callback function will not be called any more.
UpdateForAddPolicy(params ...string) errorUpdateForAddPolicy calls the update callback of other instances to synchronize their policy. It is called after Enforcer.AddPolicy()
UpdateForRemovePolicy(params ...string) errorUPdateForRemovePolicy calls the update callback of other instances to synchronize their policy. It is called after Enforcer.RemovePolicy()
UpdateForRemoveFilteredPolicy(fieldIndex int, fieldValues ...string) errorUpdateForRemoveFilteredPolicy calls the update callback of other instances to synchronize their policy. It is called after Enforcer.RemoveFilteredNamedGroupingPolicy()
UpdateForSavePolicy(model model.Model) errorUpdateForSavePolicy calls the update callback of other instances to synchronize their policy. It is called after Enforcer.RemoveFilteredNamedGroupingPolicy()
Last updated on 4/12/2021
← AdaptersDispatchers →
  • WatcherEx
Casbin
Docs
Getting StartedManagement APIRBAC APIMiddlewares
Community
Who's using Casbin?ForumStack OverflowProject Chat
Casbin          jCasbin
Node-Casbin   PHP-CasbinPyCasbin          Casbin.NETCasbin-CPP        Casbin-RS
Follow @CasbinNews
Copyright © 2021 Casbin contributors.