GO 权限管理之 Casbin

GO 权限管理之 Casbin

我们来回顾一下上次分享的 GO中 gjson 库的应用和分享,它主要是提供了一种非常快速简单的方式从json文档中获取相应值

  • 分享了 jsongjson分别代表什么
  • gjson 的简单使用
  • gjson 校验,获取值
  • gjsonjson 行
  • gjson的键路径匹配规则
  • gjson的修饰符和自定义修饰符

要是对 gjson还有点兴趣的话,可以查看文章 GO中gjson的应用和分享

今天咱们来分享一下 GO里面的权限管理,Casbin

权限管理是什么?

一般指根据系统设置的安全规则或者安全策略

用户可以访问而且只能访问自己被授权的资源,不多不少刚刚好

权限管理几乎出现在任何系统里面

我们可能会把 用户身份认证密码加密系统管理权限管理弄混淆,那么他们具体的侧重点是什么呢?

  • 用户身份认证

不属于权限管理范畴

用户身份认证指的是通过某种凭证来证明自己的身份,例如账号密码,指纹,人脸识别等等

  • 系统管理

是系统中的一个模块,该模块一般还含有权限管理子模块 , 该模块相当于给权限管理模块提供了一些数据

  • 密码加密

也是不属于权限管理范畴 , 他只是用户身份认证领域的一个部分

Casbin 是个啥?

是 GO 项目的功能强大且高效的开源访问控制库,casbin支持常用的多种访问控制模型,例如:

  • RBAC
  • ABAC
  • ACL

使用casbin来做权限管理有一个比较好的地方是,casbin是支持多种语言的,就像protobuf一样也是支持多种语言

咱们来看看 Casbin 有啥特性

  • 实施策略是这样子的 {subject, object, action}

我们也可以自定义,同时他支持允许授权和拒绝授权

  • 他可以处理访问控制模型以及其存储对应的策略
  • RBAC中的角色层次结构 中,他可以管理角色用户映射和角色角色映射
  • 他支持内置的超级用户

rootadministrator

  • 支持多个内置运算符规则匹配

例如 hello/world ,就可以将其映射到 hello*模式

  • 不支持身份验证
  • 不支持管理用户或角色列表

咱们看一下 Casbin 的基本模型

Casbin 库中,他是基于PERM元模型将访问控制模型抽象为CONF文件,有如下4个部分

  • 策略
  • 效果
  • 请求
  • 匹配器

一起来了解一个最简单的模型,ACLCONF模型

#请求定义
[request_definition]
r = sub, obj, act
#策略定义
[policy_definition]
p = sub, obj, act
#角色定义
[role_definition]
g = _, _

[policy_effect]
e = some(where (p.eft == allow))

[matchers]
m = g(r.sub, p.sub) && r.obj == p.obj && r.act == p.act

例如一个ACL模型的示例策略

p, xiaomt, data1, read
p, xiaomt, data2, write

咱们来写一个DEMO

  • main.go 文件写gin 对应的接口以及 casbin 的使用
  • rbac_models.conf RBAC CONF文件

咱们写一个路由,里面添加一个拦截器,再写一个接口/api/v1/hello,使用GET方法验证效果

package main

import (
   "fmt"
   "log"

   "github.com/casbin/casbin"
   xd "github.com/casbin/xorm-adapter"
   "github.com/gin-gonic/gin"
   _ "github.com/go-sql-driver/mysql"
)

// myAuth 拦截器</
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值