Golang Go语言中求教一下后台的 API 鉴权的具体实现
语言用的 go ,框架是 echo ;最近想自己撸个后台的轮子结果卡在这块了
想实现一个常规的权限管理,关联关系:用户->角色->菜单,假如角色“普通用户”没有菜单“文章管理”的权限,那文章的增删改查接口肯定要拦截"普通用户"的请求,但是不知道怎么在中间件判断用户请求的接口是文章管理的接口
想了两种方式:
方法 1:新建一个 API 表和角色表关联,手动录入接口 url 的正则表达式,在中间件里查角色关联的所有 API 数据后循环匹配当前请求 url 如果没匹配到就是没有权限;
方法 2:写一个自定义函数 func AdminApi(name string),记录 name 后返回一个中间件,在 API 管理界面展示记录到的 name 列表并可以分配给角色,每个 AdminApi 函数返回的中间件闭包判断传入的 name 是否存在于当前角色的 name 列表;
感觉两种方法都各有利弊,请教一下各位都是怎么做的 纠结好几天了🥲
Golang Go语言中求教一下后台的 API 鉴权的具体实现
更多关于Golang Go语言中求教一下后台的 API 鉴权的具体实现的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
鉴权的时候,在中间件里面定义可变参数,静态路径不传,动态路径要传,别用正则
RBAC 鉴权,按角色分配权限,再赋予用户角色
go 有现成的实现 https://casbin.org/docs/middlewares
casbin
好的 已经在学 casbin 了
感谢指点,刚刚发现 echo 的 context 有个.Path()方法可以返回完整的注册时的路径 /admin/article/:id😁
casbin\opa