开源技术小栈开源技术小栈
🌐 Home
⛄ 精选文章
🐜 数据库
Ⓜ️ 微服务
📺 Bilibili
🐳 Github
🎃 腾讯云社区
💫 博客园
  • 💫 Git
  • 🐜 Linux
  • 🕸️ Docker
  • 🐌 Jenkins
🌐 Home
⛄ 精选文章
🐜 数据库
Ⓜ️ 微服务
📺 Bilibili
🐳 Github
🎃 腾讯云社区
💫 博客园
  • 💫 Git
  • 🐜 Linux
  • 🕸️ Docker
  • 🐌 Jenkins
  • 队列

    • 🔷 十万个为什么?
  • Casbin

    • 🔷 快速开始
    • 🔶 工作原理
    • 🔷 Model语法策略
    • 🔶 Model高级
    • 🔷 策略高级
    • 🔶 快速开始
  • Zipkin链路追踪

    • 🔷 概述
    • 🔶 快速开始
    • 🔷 webman框架实战

概述

在Casbin中,适配器(adapter,Casbin的中间件)实现了policy规则写入持久层的细节。 Casbin的用户可以调用adapter的loadPolicy()方法从持久层中加载policy规则, 同样也可以调用savePolicy()方法将Policy规则保存到持久层中。 为了保持代码轻量, 我们没有将adapter的代码放在主库中。

内置的File adapter

文件适配器,是将Policy策略存储在.csv的文件中:

$e = new Enforcer("path/to/model.conf", "path/to/policy.csv");

也可以先初始化Adapter:

use Casbin\Persist\Adapters\FileAdapter;

// 初始化一个适配器
$adapter = new FileAdapter("path/to/policy.csv");

// 用model文件和已有的适配器创建一个决策器
$e = new Enforcer("path/to/model.conf", $adapter);

支持的其他Adapter

Casbin也支持将Policy存储在数据库中,官方提供了在主流框架中使用Casbin的扩展

PHP版本目前提供了Laravel、Yii2、CakePHP、ThinkPHP等主流框架的扩展,可以查阅官方仓库:https://github.com/php-casbin

自定义Adapter

自定义Adapter比较简单:只需要实现Casbin\Persist\Adapter接口即可:

class MyAdapter implements Adapter{

    // 加载Policy
    public function loadPolicy($model){

    }

    // 保存Policy
    public function savePolicy($model){

    }

    // 新增Policy
    public function addPolicy($sec, $ptype, $rule){

    }

    // 删除Policy
    public function removePolicy($sec, $ptype, $rule){

    }

    // 删除符合筛选条件的policy规则
    public function removeFilteredPolicy($sec, $ptype, $fieldIndex, ...$fieldValues){

    }
}

然后,在初始化决策器时,传入自定义的Adapter:

$adapter = new MyAdapter();

$e = new Enforcer("path/to/model.conf", $adapter);
最近更新: 2024/4/4 16:33
贡献者: Tinywan
Prev
🔶 Model高级
Next
🔶 快速开始