Documentação | Tutoriais | Extensões
Notícias de última hora : Laravel-authz já está disponível, uma biblioteca de autorização para o framework Laravel.
PHP-Casbin é uma biblioteca de controle de acesso de código aberto poderosa e eficiente para projetos PHP. Ele fornece suporte para impor autorização com base em vários modelos de controle de acesso.
Casinha | jCasbin | nó-Casbin | PHP-Casbin |
pronto para produção | pronto para produção | pronto para produção | pronto para produção |
PyCasbin | Casbin.NET | Casbin-CPP | Casbin-RS |
pronto para produção | pronto para produção | pronto para produção | pronto para produção |
Exija este pacote no composer.json
do seu projeto. Isso fará o download do pacote:
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
. Não controla o acesso a um artigo ou log específico.resource.Owner
pode ser usada para obter o atributo de um recurso./res/*
, /res/:id
e métodos HTTP como GET
, POST
, PUT
, DELETE
.No php-casbin, um modelo de controle de acesso é abstraído em um arquivo CONF baseado no metamodelo PERM (Policy, Effect, Request, Matchers) . Portanto, mudar ou atualizar o mecanismo de autorização de um projeto é tão simples quanto modificar uma configuração. Você pode personalizar seu próprio modelo de controle de acesso combinando os modelos disponíveis. Por exemplo, você pode reunir funções RBAC e atributos ABAC dentro de um modelo e compartilhar um conjunto de regras de política.
O modelo mais básico e simples do php-casbin é o ACL. O modelo CONF do ACL é:
# 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
Um exemplo de política para o modelo ACL é como:
p, alice, data1, read
p, bob, data2, write
Isso significa:
O que o php-casbin faz:
{subject, object, action}
ou em um formulário personalizado conforme definido, as autorizações de permissão e negação são suportadas.root
ou administrator
. Um superusuário pode fazer qualquer coisa sem permissões explícitas.keyMatch
pode mapear uma chave de recurso /foo/bar
para o padrão /foo*
.O que o php-casbin NÃO faz:
username
e password
quando um usuário faz login)https://casbin.org/docs/en/overview
Você também pode usar o editor online (http://casbin.org/editor/) para escrever seu modelo e política php-casbin em seu navegador. Ele fornece funcionalidades como syntax highlighting
e code completion
, assim como um IDE para uma linguagem de programação.
https://casbin.org/docs/tutorials
php-casbin fornece dois conjuntos de APIs para gerenciar permissões:
https://casbin.org/docs/en/adapters
https://casbin.org/docs/en/role-managers
Modelo | Arquivo de modelo | Arquivo de política |
---|---|---|
LCA | modelo_básico.conf | política_básica.csv |
ACL com superusuário | modelo_básico_com_root.conf | política_básica.csv |
ACL sem usuários | basic_model_without_users.conf | basic_policy_without_users.csv |
ACL sem recursos | basic_model_without_resources.conf | basic_policy_without_resources.csv |
RBAC | rbac_model.conf | rbac_policy.csv |
RBAC com funções de recursos | rbac_model_with_resource_roles.conf | rbac_policy_with_resource_roles.csv |
RBAC com domínios/inquilinos | rbac_model_with_domains.conf | rbac_policy_with_domains.csv |
ABAC | abac_model.conf | N / D |
Repousante | keymatch_model.conf | keymatch_policy.csv |
Negar substituição | rbac_model_with_deny.conf | rbac_policy_with_deny.csv |
Prioridade | prioridade_model.conf | prioridade_policy.csv |
Middlewares Authz para estruturas web: https://casbin.org/docs/middlewares
https://casbin.org/docs/adopters
Este projeto existe graças a todas as pessoas que contribuem.
Obrigado a todos os nossos apoiadores! [Torne-se um apoiador]
Apoie este projeto tornando-se um patrocinador. Seu logotipo aparecerá aqui com um link para seu site. [Torne-se um patrocinador]
Este projeto está licenciado sob a licença Apache 2.0.
Se você tiver algum problema ou solicitação de recurso, entre em contato conosco. Relações públicas são bem-vindas.