Dokumentasi | Tutorial | Ekstensi
Berita Terkini : Laravel-authz sekarang tersedia, perpustakaan otorisasi untuk kerangka Laravel.
PHP-Casbin adalah pustaka kontrol akses sumber terbuka yang kuat dan efisien untuk proyek PHP. Ini memberikan dukungan untuk menegakkan otorisasi berdasarkan berbagai model kontrol akses.
Kasbin | jCasbin | simpul-Casbin | PHP-Kasbin |
siap produksi | siap produksi | siap produksi | siap produksi |
PyCasbin | Kasbin.NET | Casbin-CPP | Kasbin-RS |
siap produksi | siap produksi | siap produksi | siap produksi |
Wajibkan paket ini di composer.json
proyek Anda. Ini akan mengunduh paket:
composer require casbin/casbin
require_once ' ./vendor/autoload.php ' ;
use Casbin Enforcer ;
$ e = new Enforcer ( " path/to/model.conf " , " path/to/policy.csv " );
$ sub = " alice " ; // the user that wants to access a resource .
$ obj = " data1 " ; // the resource that is going to be accessed .
$ act = " read " ; // the operation that the user performs on the resource .
if ( $ e -> enforce ( $ sub , $ obj , $ act ) === true ) {
// permit alice to read data1
} else {
// deny the request , show an error
}
write-article
, read-log
. Itu tidak mengontrol akses ke artikel atau log tertentu.resource.Owner
dapat digunakan untuk mendapatkan atribut suatu sumber daya./res/*
, /res/:id
dan metode HTTP seperti GET
, POST
, PUT
, DELETE
.Di php-casbin, model kontrol akses disarikan ke dalam file CONF berdasarkan metamodel PERM (Policy, Effect, Request, Matchers) . Jadi mengalihkan atau meningkatkan mekanisme otorisasi suatu proyek semudah memodifikasi konfigurasi. Anda dapat menyesuaikan model kontrol akses Anda sendiri dengan menggabungkan model yang tersedia. Misalnya, Anda bisa menggabungkan peran RBAC dan atribut ABAC dalam satu model dan berbagi satu set aturan kebijakan.
Model paling dasar dan paling sederhana di php-casbin adalah ACL. CONF model ACL adalah:
# 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
Contoh kebijakan untuk model ACL adalah seperti:
p, alice, data1, read
p, bob, data2, write
Artinya:
Apa yang dilakukan php-casbin:
{subject, object, action}
klasik atau formulir yang disesuaikan seperti yang Anda tetapkan, otorisasi mengizinkan dan menolak didukung.root
atau administrator
. Pengguna super dapat melakukan apa saja tanpa izin yang jelas.keyMatch
dapat memetakan kunci sumber daya /foo/bar
ke pola /foo*
.Apa yang TIDAK dilakukan php-casbin:
username
dan password
saat pengguna login)https://casbin.org/docs/en/overview
Anda juga dapat menggunakan editor online (http://casbin.org/editor/) untuk menulis model dan kebijakan php-casbin di browser web Anda. Ini menyediakan fungsionalitas seperti syntax highlighting
dan code completion
, seperti IDE untuk bahasa pemrograman.
https://casbin.org/docs/tutorials
php-casbin menyediakan dua set API untuk mengelola izin:
https://casbin.org/docs/en/adapters
https://casbin.org/docs/en/role-managers
Model | Berkas model | File kebijakan |
---|---|---|
ACL | basic_model.conf | basic_policy.csv |
ACL dengan pengguna super | basic_model_with_root.conf | basic_policy.csv |
ACL tanpa pengguna | basic_model_without_users.conf | kebijakan_dasar_tanpa_pengguna.csv |
ACL tanpa sumber daya | basic_model_without_resources.conf | basic_policy_without_resources.csv |
RBAC | rbac_model.conf | rbac_policy.csv |
RBAC dengan peran sumber daya | rbac_model_with_resource_roles.conf | rbac_policy_with_resource_roles.csv |
RBAC dengan domain/penyewa | rbac_model_with_domains.conf | rbac_policy_with_domains.csv |
ABAC | abac_model.conf | T/A |
Tenang | keymatch_model.conf | keymatch_policy.csv |
Tolak-timpa | rbac_model_with_deny.conf | rbac_policy_with_deny.csv |
Prioritas | prioritas_model.conf | prioritas_kebijakan.csv |
Middleware Authz untuk kerangka web: https://casbin.org/docs/middlewares
https://casbin.org/docs/adopters
Proyek ini ada berkat semua orang yang berkontribusi.
Terima kasih kepada semua pendukung kami! [Menjadi pendukung]
Dukung proyek ini dengan menjadi sponsor. Logo Anda akan muncul di sini dengan tautan ke situs web Anda. [Menjadi sponsor]
Proyek ini dilisensikan di bawah lisensi Apache 2.0.
Jika Anda memiliki masalah atau permintaan fitur, silakan hubungi kami. PR disambut baik.