beego利用casbin进行权限管理——第一节 起步、测试

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/details/78460385

casbin很好用,支持beego等框架,作者很勤奋,把几乎所有的框架都写了adapter。

补充:经过这么久的使用,我觉得为何要用这个东西,总结有这么几个:

1.用了casbin后,我们自己的项目启动的时候,会读取权限数据库到内存(map),这期间的查询会只是查询内存,不用查数据库。权限的存储和修改,casbin先改内存,然后同步修改数据库。如果自己写,还是比较麻烦的。

2.比如,用户user属于一个角色role,用户user具有一个资源data1的某个权限action1,role也具有另一个资源data2的某个权限action2,那么这个user就同时具备了data1的action1和data2的action2,这是自动在casbin的规则中定义就行了。

3.总的来说还是节约了代码,增删查改都是一行代码搞定。比如下面:

// o := orm.NewOrm()
		// qs := o.QueryTable("casbin_rule")
		// _, err = qs.Filter("PType", "p").Filter("v1", "/onlyoffice/"+strconv.FormatInt(w.Id, 10)).All(&users)
		// if err != nil {
		// 	beego.Error(err)
		// }
		users := e.GetFilteredPolicy(1, "/onlyoffice/"+strconv.FormatInt(w.Id, 10))//这一行代替了上面

拿过来试了一下,先记录如下:

1、我的权限设计思路类似hauth是:a)用户;b)角色;c)权限;d)资源放在树状目录下,数据库记录的是目录的id,而非具体的路径。向用户分配角色,再将权限分配给角色。

2、casbin中下载beego-orm-adapter,并修改一点代码:

3、beego项目中conf目录下拷入rbac_model.conf;建立一个rolecontrollers.go,其中代码来自beego-orm-adapter中的readme.md,如下图:

4、bee run就会新建一个casbin_rule的数据库,填入策略数据如下图:

5、可以建个路由访问test()测试一下了:

问题:用户访问的资源比如是/v1/v2/v3/data.jpg,而数据库中所保存的资源data.jpg的路径不是明确的,只是保存了它所属的目录v3的id——目录v3的数据库也只保存了它父级v2的id……(也就是说/v1/v2/v3/data.jpg中的v1随时可能改名成v4,然后整个资源路径就变成/v4/v2/v3/data.jpg )所以策略要用保存id来实现。

先到这了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏运维

Nginx1.10.2稳定版本tcp四层负载安装配置过程略解

nginx1.10.2(2016.10.18)是最新稳定版,适合线上运行,最新开发版为1.11.8(2016.12.27)

1261
来自专栏流柯技术学院

android自动化之monkeyrunner

运行monkeyrunner之前必须先运行相应的模拟器或连上设备,不然monkeyrunner无法连接设备。

1352
来自专栏Java帮帮-微信公众号-技术文章全总结

JavaWeb14-事务,连接池(Java正在的全栈开发)

? 事务&连接池 一.事务 1. 事务介绍 什么是事务 事务,一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元...

2874
来自专栏张戈的专栏

Linux系统zip压缩命令详细参数,附文件排除选项的正确用法

这次给博客添加了纯代码缓存之后,发现缓存文件竟然达到了 50 多 MB!而我的服务器每次还需要同步至七牛,文件体积的增加都会增加文件远程同步备份的时间。因此,我...

3235
来自专栏Java技术分享

PDF.js专题

前言     英文是github上的原文,找不到中文资料,我根据自己理解翻译的,有些词意思拿不准就直接把单词留在原地了,看这个文档应该可以凑合着用了。 PDF....

1.6K10
来自专栏技术博文

H5缓存机制浅析

1 H5 缓存机制介绍 H5,即 HTML5,是新一代的 HTML 标准,加入很多新的特性。离线存储(也可称为缓存机制)是其中一个非常重要的特性。H5 引入的离...

4248
来自专栏黑泽君的专栏

c语言基础学习02_windows系统下的cmd命令

============================================================================= 注意...

2822
来自专栏王磊的博客

Twitter Storm安装配置(Ubuntu系统)单机版

要使用storm首先要安装以下工具:JDK、Python、zookeeper、zeromq、jzmq、storm (注:各个模块都是独立的,如果安装失败或者卡顿...

3205
来自专栏何俊林

一个强大的网络库RxEasyHttp

本文来自周游的投稿,封装的网络请求库,github:https://github.com/zhou-you/RxEasyHttp,欢迎点击【阅读原文】,查看更多...

3918

创建您的第一本Chef Cookbook

Cookbook是Chef框架的关键组成部分之一,其描述了相关节点的所需状态,并允许Chef推送需达到该状态的更改数据。由于需要进行配置的选项和区域数量众多,第...

2475

扫码关注云+社区

领取腾讯云代金券