Policy Storage
No Casbin, o armazenamento de política é implementado como um adaptador.
Carregando política de um arquivo .CSV
Esta é a maneira mais comum de usar o Casbin. É fácil de entender para iniciantes e conveniente para compartilhar quando você pede ajuda à equipe do Casbin.
O conteúdo do arquivo .CSV examples/rbac_policy.csv é o seguinte:
p, alice, data1, read
p, bob, data2, write
p, data2_admin, data2, read
p, data2_admin, data2, write
g, alice, data2_admin
Se o seu arquivo contém vírgulas, você deve envolvê-las em aspas duplas. Por exemplo:
p, alice, "data1,data2", read --correct
p, alice, data1,data2, read --incorrect (the whole phrase "data1,data2" should be wrapped in double quotes)
Se o seu arquivo contém vírgulas e aspas duplas, você deve envolver o campo em aspas duplas e duplicar quaisquer aspas duplas incorporadas.
p, alice, data, "r.act in (""get"", ""post"")" --correct
p, alice, data, "r.act in ("get", "post")" --incorrect (you should use "" to escape "")
Problema relacionado: casbin#886
API do Adaptador
| Método | Tipo | Descrição |
|---|---|---|
| LoadPolicy() | básico | Carregar todas as regras de política do armazenamento |
| SavePolicy() | básico | Salvar todas as regras de política no armazenamento |
| AddPolicy() | opcional | Adicionar uma regra de política ao armazenamento |
| RemovePolicy() | opcional | Remover uma regra de política do armazenamento |
| RemoveFilteredPolicy() | opcional | Remover regras de política que correspondam ao filtro do armazenamento |
Formato de Armazenamento de Banco de Dados
Seu arquivo de política
p, data2_admin, data2, read
p, data2_admin, data2, write
g, alice, admin
Estrutura de banco de dados correspondente (como MySQL)
| id | ptype | v0 | v1 | v2 | v3 | v4 | v5 |
|---|---|---|---|---|---|---|---|
| 1 | p | data2_admin | data2 | read | |||
| 2 | p | data2_admin | data2 | write | |||
| 3 | g | alice | admin |
Significado de cada coluna
id: A chave primária no banco de dados. Não existe como parte dapolítica casbin. A forma como é gerado depende do adaptador específico.ptype: Corresponde ap,g,g2, etc.v0-v5: Os nomes das colunas não têm um significado específico e correspondem aos valores nopolicy csvda esquerda para a direita. O número de colunas depende de quantas você define por si mesmo. Em teoria, pode haver um número infinito de colunas, mas geralmente apenas 6 colunas são implementadas no adaptador. Se isso não for suficiente para você, por favor, envie um problema para o repositório do adaptador correspondente.
Detalhes do Adaptador
Para mais detalhes sobre o uso da API do adaptador e o design da estrutura da tabela do banco de dados, por favor, visite: /docs/adapters