casbin 使用说明记录

2023-05-16

本文简单记录casbin 安装步骤

使用 Casbin 作为 ThinkPHP 的权限控制中间件

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

Think-Casbin 是一个专为 ThinkPHP5.1 定制的 Casbin 的扩展包,使开发者更便捷的在 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

中间件

ThinkPHP 从 5.1.6+ 版本开始,正式引入中间件的支持。

可以通过命令行指令快速生成中间件

php think make:middleware Authorization

这个指令会 application/http/middleware 目录下面生成一个 Authorization 中间件。

在中间件中,获取当前用户名、URI、请求方法,通过 Casbin 验证权限:

<?php

namespace app\http\middleware;

use Casbin;

class Authorization
{
    public function checkPermissions () {
		$request = request();
		$user_id = $this->uid;
			
		$url = $request->url();
		$action = $request->method();
		
		if (!$user_id) {
			echo 'not user';
		}
			
		if (!Casbin::enforce($user_id, $url, $action)) {
			echo 'not permissions';
		}
			
	}
}

 

 

验证

在执行授权之前,先在数据库 casbin_rule 表中添加一些默认的策略:

idptypev0v1v2
1ptest_user/usersGET
2ptest_user/users/:idGET

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

casbin 使用说明记录 的相关文章

随机推荐

  • day1: 357. 计算各个位数不同的数字个数

    给定一个非负整数 n xff0c 计算各位数字都不同的数字 x 的个数 xff0c 其中 0 x lt 10n 示例 输入 2 输出 91 解释 答案应为除去 11 22 33 44 55 66 77 88 99 外 xff0c 在 0 1
  • day1: 二叉树

    1 二叉树的层序遍历 给你一个二叉树 xff0c 请你返回其按 层序遍历 得到的节点值 xff08 即逐层地 xff0c 从左到右访问所有节点 xff09 示例 xff1a 二叉树 xff1a 3 9 20 null null 15 7 3
  • 求正整数的平方根

    34 34 34 求正整数的平方根 二分查找 34 34 34 def sqrt val t if val lt 0 or t lt 0 return 0 left 61 0 right 61 val mid 61 left 43 righ
  • 对BN的理解

    BN原理与使用过程详解 内部协变量偏移 Internal Covariate Shift 和批归一化 Batch Normalization 对于BN层的理解 关于BN防止过拟合的分析 BN Batch Normalization 原理与使
  • 感受野的计算方法

    卷积神经网络基础题 如何计算多层卷积 池化网络每一层的感受野 Receptive Field
  • day2:215. 数组中的第K个最大元素 快速排序 python代码

    34 34 34 快速排序 思想 xff1a 基本思想是 xff1a 通过一趟排序将要排序的数据分割成独立的两部分 xff0c 其中一部分的所有数据都比另外一部分的所有数据都要小 xff0c 然后再按此方法对这两部分数据分别进行快速排序 x
  • 梯度消失和梯度爆炸原因及其解决方案

    梯度消失和梯度爆炸原因及其解决方案
  • day3: 剑指 Offer 48. 最长不含重复字符的子字符串

    剑指 Offer 48 最长不含重复字符的子字符串 请从字符串中找出一个最长的不包含重复字符的子字符串 xff0c 计算该最长子字符串的长度 示例 1 输入 34 abcabcbb 34 输出 3 解释 因为无重复字符的最长子串是 34 a
  • idea中java版本设置

    1 打开file gt Project structure gt project Settings gt Project gt Project SDK中设置 2 设置IDEA本身的jdk版本 打开file gt settings gt ja
  • 剑指 Offer 59 - II. 队列的最大值

    剑指 Offer 59 II 队列的最大值 请定义一个队列并实现函数 max value 得到队列里的最大值 xff0c 要求函数max value push back 和 pop front 的均摊时间复杂度都是O 1 若队列为空 xff
  • 剑指 Offer 46. 把数字翻译成字符串

    剑指 Offer 46 把数字翻译成字符串 给定一个数字 xff0c 我们按照如下规则把它翻译为字符串 xff1a 0 翻译成 a xff0c 1 翻译成 b xff0c xff0c 11 翻译成 l xff0c xff0c 25 翻译成
  • python 异或的应用

    符号 描述 运算规则 amp 与 两个位都为1时 xff0c 结果才为1 xff08 统计奇数 xff09 全1为1 或 两个位都为0时 xff0c 结果才为0 xff08 统计偶数 xff09 全0为0 异或 两个位相同为0 xff0c
  • day4: 剑指 Offer 64. 求1+2+…+n

    剑指 Offer 64 求1 43 2 43 43 n 求 1 43 2 43 43 n xff0c 要求不能使用乘除法 for while if else switch case等关键字及条件判断语句 xff08 A B C xff09
  • day5: 链表

    1 剑指 Offer 22 链表中倒数第k个节点 输入一个链表 xff0c 输出该链表中倒数第k个节点 为了符合大多数人的习惯 xff0c 本题从1开始计数 xff0c 即链表的尾节点是倒数第1个节点 例如 xff0c 一个链表有6个节点
  • LCP 18. 早餐组合

    小扣在秋日市集选择了一家早餐摊位 xff0c 一维整型数组 staple 中记录了每种主食的价格 xff0c 一维整型数组 drinks 中记录了每种饮料的价格 小扣的计划选择一份主食和一款饮料 xff0c 且花费不超过 x 元 请返回小扣
  • 第 208 场周赛

    1 5523 文件夹操作日志搜集器 class Solution def minOperations self logs List str gt int 栈 xff0c 先进 后出 zhan 61 39 main 39 for log in
  • day 5: 字符串

    1 剑指 Offer 38 字符串的排列 输入一个字符串 xff0c 打印出该字符串中字符的所有排列 你可以以任意顺序返回这个字符串数组 xff0c 但里面不能有重复元素 示例 xff1a 输入 xff1a s 61 34 abc 34 输
  • day6: 数组

    1 18 四数之和 给定一个包含 n 个整数的数组 nums 和一个目标值 target xff0c 判断 nums 中是否存在四个元素 a xff0c b xff0c c 和 d xff0c 使得 a 43 b 43 c 43 d 的值与
  • day7: 剑指 Offer 44. 数字序列中某一位的数字

    1 剑指 Offer 44 数字序列中某一位的数字 数字以0123456789101112131415 的格式序列化到一个字符序列中 在这个序列中 xff0c 第5位 xff08 从下标0开始计数 xff09 是5 xff0c 第13位是1
  • casbin 使用说明记录

    本文简单记录casbin 安装步骤 使用 Casbin 作为 ThinkPHP 的权限控制中间件 PHP Casbin 是一个强大的 高效的开源访问控制框架 xff0c 它支持基于各种访问控制模型的权限管理 Think Casbin 是一个