Need help with think-casbin?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

php-casbin
145 Stars 22 Forks Apache License 2.0 21 Commits 1 Opened issues

Description

专为ThinkPHP定制的Casbin的扩展包,Casbin是一个功能强大,高效的开源访问控制库。

Services available

!
?

Need anything else?

Contributors list

Think-Casbin

Build Status Coverage Status Latest Stable Version Total Downloads License

PHP-Casbin 是一个强大的、高效的开源访问控制框架,它支持基于各种访问控制模型的权限管理。

Think-Casbin 是一个专为ThinkPHP5.1定制的Casbin的扩展包,使开发者更便捷的在thinkphp项目中使用Casbin。

针对 ThinkPHP6.0 现在推出了更加强大的扩展 ThinkPHP 6.0 Authorization.

知识储备

  • 熟练使用
    Composer
    包管理工具
  • 掌握ThinkPHP框架各个功能,例如:门面(Facade)、模型、数据库迁移工具等
  • 熟悉PHP命令行、ThinkPHP命令行的使用
  • 了解
    Casbin
    工作原理及用法

安装

  1. 创建thinkphp项目(如果没有):
composer create-project topthink/think=5.1.* tp5
  1. ThinkPHP
    项目里,安装
    Think-Casbin
    扩展:
composer require casbin/think-adapter
  1. 发布资源:
php think casbin:publish

这将自动创建model配置文件

config/casbin-basic-model.conf
,和Casbin的配置文件
config/casbin.php
  1. 数据迁移:

由于Think-Casbin默认将Casbin的策略(Policy)存储在数据库中,所以需要初始化数据库表信息。

执行前,请确保数据库连接信息配置正确,如需单独修改

Casbin
的数据库连接信息或表名,可以修改
config/casbin.php
里的配置。
php think casbin:migrate

这将会自动创建Casbin的策略(Policy)表

casbin_rule

用法

为用户分配权限

use Casbin;

// 给用户alice赋予对data1的read权限 Casbin::addPolicy('alice', 'data1', 'read');

判断是权限策略是否存在

Casbin::hasPolicy('alice', 'data1', 'read'); // true

移除权限

Casbin::removePolicy('alice', 'data1', 'read');

使用决策器,验证权限

use Casbin;

$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 (true === Casbin::enforce($sub, $obj, $act)) { // permit alice to read data1 echo 'permit alice to read data1'; } else { // deny the request, show an error }

自定义配置

config/casbin-basic-model.conf
为Casbin的model文件

config/casbin.php
为Casbin的adapter、db配置信息

更多API参考

关于

Think-Casbin

  • 实现基于Think-ORM的Adapter存储(将Policy存储在数据库中)
  • 实现Casbin的门面(think\Facade)调用,使用
    \Casbin::
    可以静态调用
    PHP-Casbin
    Enforcer
    的所有方法。
  • 使用配置文件对Casbin的Model、Adapter的可配置化

通过Casbin官网 (https://casbin.org )查看更多用法。

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.