Pular para o conteúdo principal

Policy Storage

Casbin implements policy storage through adapters.

Carregando política de um arquivo .CSV

Loading from a CSV file is the standard approach. This method is straightforward for beginners and convenient when seeking help from the Casbin team.

Here's an example CSV file examples/rbac_policy.csv:

p, alice, data1, read
p, bob, data2, write
p, data2_admin, data2, read
p, data2_admin, data2, write
g, alice, data2_admin
nota

When CSV fields contain commas, wrap them in double quotes:

p, alice, "data1,data2", read    --correct
p, alice, data1,data2, read --incorrect (the whole phrase "data1,data2" should be wrapped in double quotes)

When fields contain both commas and double quotes, wrap the field in double quotes and escape embedded quotes by doubling them:

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étodoTipoDescrição
LoadPolicy()básicoCarregar todas as regras de política do armazenamento
SavePolicy()básicoSalvar todas as regras de política no armazenamento
AddPolicy()opcionalAdicionar uma regra de política ao armazenamento
RemovePolicy()opcionalRemover uma regra de política do armazenamento
RemoveFilteredPolicy()opcionalRemover 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)

idptypev0v1v2v3v4v5
1pdata2_admindata2read
2pdata2_admindata2write
3galiceadmin

Significado de cada coluna

  • id: Database primary key, not part of the Casbin policy. Generation method depends on the adapter implementation.

  • ptype: Corresponds to p, g, g2, etc.

  • v0-v5: Generic column names that map to policy CSV values from left to right. The number of columns depends on your policy definition. Most adapters implement 6 columns, though theoretically unlimited columns are possible. Submit an issue to the adapter repository if you need more columns.

Detalhes do Adaptador

For more information about the adapter API and database structure design, see /docs/adapters.