前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >🥳 webman-permission v2.0.0 发布!

🥳 webman-permission v2.0.0 发布!

作者头像
Tinywan
发布2024-11-21 18:42:10
发布2024-11-21 18:42:10
11600
代码可运行
举报
文章被收录于专栏:开源技术小栈开源技术小栈
运行总次数:0
代码可运行

概述

Casbin 是一个强大的、高效的开源访问控制框架,其权限管理机制支持多种访问控制模型。支持的语言也很多。例如:PHP、Golang、Java、Python等等.

支持的语言

安装

代码语言:javascript
代码运行次数:0
复制
composer require -W casbin/webman-permission

插件地址:https://www.workerman.net/plugin/6

使用

依赖注入配置

修改配置config/container.php 其最终内容如下:

代码语言:javascript
代码运行次数:0
复制
$builder = new \DI\ContainerBuilder();
$builder->addDefinitions(config('dependence', []));
$builder->useAutowiring(true);
return $builder->build();

数据库配置

默认策略存储是使用的ThinkORM。如使用 laravel的数据库 illuminate/database,请按照官方文档按照相应的依赖包:https://www.workerman.net/doc/webman/db/tutorial.html

创建 casbin_rule 数据表

代码语言:javascript
代码运行次数:0
复制
CREATE TABLE `casbin_rule` (
 `id` BIGINT ( 20 ) UNSIGNED NOT NULL AUTO_INCREMENT,
 `ptype` VARCHAR ( 128 ) NOT NULL DEFAULT '',
 `v0` VARCHAR ( 128 ) NOT NULL DEFAULT '',
 `v1` VARCHAR ( 128 ) NOT NULL DEFAULT '',
 `v2` VARCHAR ( 128 ) NOT NULL DEFAULT '',
 `v3` VARCHAR ( 128 ) NOT NULL DEFAULT '',
 `v4` VARCHAR ( 128 ) NOT NULL DEFAULT '',
 `v5` VARCHAR ( 128 ) NOT NULL DEFAULT '',
 PRIMARY KEY ( `id` ) USING BTREE,
 KEY `idx_ptype` ( `ptype` ) USING BTREE,
 KEY `idx_v0` ( `v0` ) USING BTREE,
 KEY `idx_v1` ( `v1` ) USING BTREE,
 KEY `idx_v2` ( `v2` ) USING BTREE,
 KEY `idx_v3` ( `v3` ) USING BTREE,
 KEY `idx_v4` ( `v4` ) USING BTREE,
    KEY `idx_v5` ( `v5` ) USING BTREE 
) ENGINE = INNODB CHARSET = utf8mb4 COMMENT = '策略规则表';

配置 config/redis 配置

代码语言:javascript
代码运行次数:0
复制
return [
    'default' => [
        'host' => 'dnmp-redis',
        'password' => '123456',
        'port' => 6379,
        'database' => 0,
    ],
    'pool_size' => 3,
];

快速开始

安装成功后,可以这样使用

代码语言:javascript
代码运行次数:0
复制
use Casbin\WebmanPermission\Permission;

// adds permissions to a user
Permission::addPermissionForUser('eve', 'articles', 'read');
// adds a role for a user.
Permission::addRoleForUser('eve', 'writer');
// adds permissions to a rule
Permission::addPolicy('writer', 'articles','edit');

你可以检查一个用户是否拥有某个权限

代码语言:javascript
代码运行次数:0
复制
use Casbin\WebmanPermission\Permission;

if (Permission::enforce("eve", "articles", "edit")) {
    echo '恭喜你!通过权限认证';
} else {
    echo '对不起,您没有该资源访问权限';
}

启动webman,请求访问结果

自定义日志

v2.0.0 版本日志支持PSR-3 标准接口\Psr\Log\LoggerInterface规范,可以自定义日志系统了。

日志配置文件app/config/plugin/casbin/webman-permission/permission.php

代码语言:javascript
代码运行次数:0
复制
    /** 日志配置 */
    'log' => [
        'enabled' => true, // changes will log messages to the Logger.
        'logger' => 'Casbin', // Casbin Logger, Supported: \Psr\Log\LoggerInterface|string
        'path' => runtime_path() . '/logs/casbin.log' // log path
    ],

默认日志为关闭状态,可以开启casbin日志,在开发阶段进行调试,开启后记录系统日志

如以上配置会在/app/runtime/logs/casbin.log生成日志

代码语言:javascript
代码运行次数:0
复制
[2024-11-02T00:49:34.311871+08:00] Casbin.INFO: Model: {info} {"info":"[r r sub, obj, act] \n[p p sub, obj, act] \n[e e some(where (p_eft == allow))] \n[m m g(r_sub, p_sub) && r_obj == p_obj && r_act == p_act] \n[g g _, _] \n"} []
[2024-11-02T00:49:34.440760+08:00] Casbin.INFO: Policy: {policy} {"policy":"p : [[eve articles read] [writer articles edit] \ng : [[eve writer]]"} []
[2024-11-02T00:49:34.640251+08:00] Casbin.INFO: Request: {request}Hit Policy: {hitPolicy} {"request":"eve, articles, edit ---> true\n","hitPolicy":"writer, articles, edit\n"} []
[2024-11-02T00:51:06.555977+08:00] Casbin.INFO: Model: {info} {"info":"[r r sub, obj, act] \n[p p sub, obj, act] \n[e e some(where (p_eft == allow))] \n[m m g(r_sub, p_sub) && r_obj == p_obj && r_act == p_act] \n[g g _, _] \n"} []
[2024-11-02T00:51:06.684262+08:00] Casbin.INFO: Policy: {policy} {"policy":"p : [[eve articles read] [writer articles edit] \ng : [[eve writer]]"} []
[2024-11-02T00:51:06.869057+08:00] Casbin.INFO: Request: {request}Hit Policy: {hitPolicy} {"request":"eve, articles, edit ---> true\n","hitPolicy":"writer, articles, edit\n"} []
[2024-11-02T00:51:32.793886+08:00] Casbin.INFO: Model: {info} {"info":"[r r sub, obj, act] \n[p p sub, obj, act] \n[e e some(where (p_eft == allow))] \n[m m g(r_sub, p_sub) && r_obj == p_obj && r_act == p_act] \n[g g _, _] \n"} []
[2024-11-02T00:51:32.917887+08:00] Casbin.INFO: Policy: {policy} {"policy":"p : [[eve articles read] [writer articles edit] \ng : [[eve writer]]"} []
[2024-11-02T00:51:33.172377+08:00] Casbin.INFO: Request: {request}Hit Policy: {hitPolicy} {"request":"eve, articles, edit1 ---> false\n","hitPolicy":""} []
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-11-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源技术小栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 支持的语言
  • 安装
  • 使用
    • 依赖注入配置
    • 数据库配置
    • 配置 config/redis 配置
  • 快速开始
  • 自定义日志
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档