Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Casbin | 16,054 | 702 | 5 days ago | 251 | November 24, 2023 | 40 | apache-2.0 | Go | ||
An authorization library that supports access control models like ACL, RBAC, ABAC in Golang: https://discord.gg/S5UjpzGZjN | ||||||||||
Spicedb | 4,018 | 5 | 7 hours ago | 73 | November 15, 2023 | 121 | apache-2.0 | Go | ||
Open Source, Google Zanzibar-inspired fine-grained permissions database | ||||||||||
Oso | 3,281 | 11 | 11 days ago | 48 | April 03, 2023 | 117 | apache-2.0 | Rust | ||
Oso is a batteries-included framework for building authorization in your application. | ||||||||||
Node Casbin | 2,378 | 32 | 117 | 8 days ago | 131 | November 21, 2023 | 20 | apache-2.0 | TypeScript | |
An authorization library that supports access control models like ACL, RBAC, ABAC in Node.js and Browser | ||||||||||
Gin Admin | 2,319 | 1 | 5 days ago | 21 | November 14, 2021 | 54 | apache-2.0 | Go | ||
A lightweight, flexible, elegant and full-featured RBAC scaffolding based on GIN + GORM 2.0 + Casbin 2.0 + Wire DI. | ||||||||||
Jcasbin | 2,241 | 8 | 9 | a month ago | 88 | October 20, 2023 | 1 | apache-2.0 | Java | |
An authorization library that supports access control models like ACL, RBAC, ABAC in Java | ||||||||||
Permify | 1,940 | 8 hours ago | 44 | November 20, 2023 | 50 | apache-2.0 | Go | |||
Permify is an open-source authorization service inspired by Google Zanzibar. | ||||||||||
Accesscontrol | 1,676 | 87 | 69 | 2 years ago | 10 | February 24, 2018 | 39 | mit | TypeScript | |
Role and Attribute based Access Control for Node.js | ||||||||||
Pycasbin | 1,181 | 2 | 42 | a month ago | 117 | October 25, 2023 | 2 | apache-2.0 | Python | |
An authorization library that supports access control models like ACL, RBAC, ABAC in Python | ||||||||||
Php Casbin | 1,143 | 27 | 27 | 3 months ago | 60 | August 31, 2023 | 4 | apache-2.0 | PHP | |
An authorization library that supports access control models like ACL, RBAC, ABAC in PHP . |
News: still worry about how to write the correct node-casbin
policy? Casbin online editor is coming to help!
node-casbin
is a powerful and efficient open-source access control library for Node.JS projects. It provides support for enforcing authorization based on various access control models.
![]() |
![]() |
![]() |
![]() |
---|---|---|---|
Casbin | jCasbin | node-Casbin | PHP-Casbin |
production-ready | production-ready | production-ready | production-ready |
![]() |
![]() |
![]() |
![]() |
---|---|---|---|
PyCasbin | Casbin.NET | Casbin-CPP | Casbin-RS |
production-ready | production-ready | beta-test | production-ready |
https://casbin.org/docs/overview
# NPM
npm install casbin --save
# Yarn
yarn add casbin
New a node-casbin
enforcer with a model file and a policy file, see Model section for details:
// For Node.js:
const { newEnforcer } = require('casbin');
// For browser:
// import { newEnforcer } from 'casbin';
const enforcer = await newEnforcer('basic_model.conf', 'basic_policy.csv');
Note: you can also initialize an enforcer with policy in DB instead of file, see Persistence section for details.
Add an enforcement hook into your code right before the access happens:
const sub = 'alice'; // the user that wants to access a resource.
const obj = 'data1'; // the resource that is going to be accessed.
const act = 'read'; // the operation that the user performs on the resource.
// Async:
const res = await enforcer.enforce(sub, obj, act);
// Sync:
// const res = enforcer.enforceSync(sub, obj, act);
if (res) {
// permit alice to read data1
} else {
// deny the request, show an error
}
Besides the static policy file, node-casbin
also provides API for permission management at run-time.
For example, You can get all the roles assigned to a user as below:
const roles = await enforcer.getRolesForUser('alice');
See Policy management APIs for more usage.
Casbin provides two sets of APIs to manage permissions:
https://casbin.org/docs/supported-models
https://casbin.org/docs/adapters
https://casbin.org/docs/watchers
https://casbin.org/docs/role-managers
This project exists thanks to all the people who contribute.
Thank you to all our backers! 🙏 [Become a backer]
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]
This project is licensed under the Apache 2.0 license.
If you have any issues or feature requests, please contact us. PR is welcomed.