type
status
date
slug
summary
tags
category
password
Gin + Gorm + Casbin 实现权限管理
1:Casbin 概念
1.1:核心概念
1.1.1:Model
1.1.2:Policy
1.1.3:示例
1.2:ACL 模型和 RBAC模型
1.2.1:ACL 模型
1.2.2:RBAC 模型
2:Casbin 库的使用
2.1:Enforcer 执行器概念
2.2:Adapter 适配器概念
2.3:Functions (Matchers 中的函数)
函数 | url | 模式 |
keyMatch | 一个URL 路径,例如 /alice_data/resource1 | 一个URL 路径或 * 模式下,例如/alice_data/* |
keyMatch2 | 一个URL 路径,例如 /alice_data/resource1 | 一个URL 路径或 : 模式下,例如/alice_data/:resource |
keyMatch3 | 一个URL 路径,例如 /alice_data/resource1 | 一个URL 路径或 {} 模式下,例如/alice_data/{resource} |
keyMatch4 | 一个URL 路径,例如 /alice_data/resource1 | 一个URL 路径或 {} 模式下,例如/alice_data//{id}/book/{id} |
keyMatch5 | a URL path like /alice_data/123/?status=1 | a URL path, a {} or* pattern like/alice_data/{id}/* |
regexMatch | 任何字符串 | 一个正则表达式模式 |
ipMatch | 像 192.168.2.123 这样的IP地址 | 像 192.168.2.0/24 这样的IP地址或CIDR |
globMatch | 像 /alice_data/resource1 这样的路径样式路径 | 像 /alice_data/* 这样的glob模式 |
2.4:总结
3:Casbin 进阶使用
3.1:权限配置以及增删改查
3.2:策略和组使用规范
ptype | v0 | v1 | v2 | v3 | v4 | v5 |
p | admin | /api/user | GET | ㅤ | ㅤ | ㅤ |
p | admin | /api/user | DELETE | ㅤ | ㅤ | ㅤ |
p | user | /api/user | GET | ㅤ | ㅤ | ㅤ |
… | … | … | ㅤ | ㅤ | ㅤ | ㅤ |
g | layzer | admin | ㅤ | ㅤ | ㅤ | ㅤ |
g | zhangsan | user | ㅤ | ㅤ | ㅤ | ㅤ |
3.3:用户以及组关系的增删改查
3.3.1:获取所有角色组
3.3.2:角色组中添加用户
3.3.3:角色组中删除用户
3.4:角色组权限的增删改查
3.4.1:获取所有角色组权限
3.4.2:创建角色组权限
3.4.3:修改角色组权限
3.4.4:删除角色组权限
3.4.5:验证用户权限
3.4.6:完整代码
3.4.7:总结
4:Casbin 鉴权中间件
4.1:中间件代码
4.2:使用中间件
4.3:测试中间件的使用
4.4:添加权限管理 API
- 作者:Gitlayzer
- 链接:https://www.devops-engineer.com.cn/article/casbin_notes
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。