php-casbin是一个强大的、高效的开源访问控制框架,它支持基于各种访问控制模型的权限管理。
think-casbin是一个专为 thinkphp5.1 定制的 casbin 的扩展包,使开发者更便捷的在 thinkphp 项目中使用 casbin。
compor create-project topthink/think=5.1.* tp5在
thinkphp
项目里,安装think-casbin
扩展:compor require casbin/think-adapter发布资源:
php think casbin:publish
这将自动创建 model 配置文件config/casbin-basic-model.conf
,和 casbin 的配置文件config/casbin.社会工作有哪些php
。
由于 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
验证权限:
1 <?php 2 3 namespace app\http\middleware; 4 5 u casbin; 6 u think\facade\ssion; 7 8 class authorization 9 {10 public function handle($request, \closure $next)11 {12 // 当前登录用户名,这里以ssion为例13 // $ur = ssio非主流符号n::get('ur_name') ?: 'test_ur';14 $ur = ssion::get('ur_name');15 16 $url = $request->url();17 $action = $request->method();18 19 if (!$ur){20 return respon()->data('unauthenticated.')->code(401);21 }22 23 机票查验 if (!casbin::enforce($ur, $url, $action)) {24 return respon()->data('unauthorized.')->code(403);25 }26 27 return $next($request);28 }29 }
config\casbin-basic-model.conf
配置文件:
1 [request_definition] 2 r = sub, obj, act 3 4 [policy_definition] 5 p = sub, obj, act 6 7 [policy_effect] 8 e = some(where (p.eft == allow)) 9 10 [matchers]11 m = r.sub == p.sub && keymatch2(r.obj, p.obj) && r.act == p.act
在执行授权之前,先在数据库casbin_rule
表中添加一些默认的策略:
添加路由及其中间件:
1 route::group('urs', function () { 2 3 route::get('', function () { 4 return 'urs data.'; 5 }); 6 7 route::get('/:id', function ($id) { 8 return 'ur: '.$id; 9 });10 11 })->middleware(\app\http\middleware\authorization::class);
先登录用户保存用户名到ssion
,可以访问/urs
、/urs/1
验证一下权限。
本文发布于:2023-04-07 21:49:25,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/0cef7cfdd7329ab57808d4d3e6018908.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:使用 Casbin 作为 ThinkPHP 的权限控制中间件.doc
本文 PDF 下载地址:使用 Casbin 作为 ThinkPHP 的权限控制中间件.pdf
留言与评论(共有 0 条评论) |