grbac 单用户多角色权限管理平台开源项目

我要开发同款
匿名用户2017年03月04日
135阅读

技术信息

开源地址
https://github.com/1046102779/grbac
授权协议
GPL

作品详情

Go语言版本的权限管理服务平台,利用shiro权限管理设计思想,支持单用户多角色,可以具体到对某一个资源进行权限控制,比RBAC的资源管理更细粒度化。

权限管理服务平台

该服务采用比较流行的微服务思想,利用shiro<域,动作,实体>思想,实现权限管理平台服务,它支持单用户多角色 ,比RBAC的资源管理更细粒度化

权限管理服务平台的实现,主要由三个步骤构成:

第一步:判断URL是否在白名单中,如果是,直接返回状态码:200第二步:解析URL,获取功能ID和实体ID,服务初始化阶段,会构建多叉树第三步:获取<域,动作,实体>,并在redis中采用SET集合存储<UserId-FucId,SET集合={实体1,实体2,...,实体N}>权限管理库表设计

权限管理库表

环境依赖beego框架redisOpeResty配置

权限管理安插在NgixAccess访问阶段,对http请求的合法性进行校验

access_by_lua_file"/data/operesty/lua_files/test_ycfm_lua_files/access_by_grbac.lua"

--GRBAC权限管理模块gx.req.read_body()localbodyData=gx.req.get_body_data()gx.log(gx.ERR,"bodydata:",bodyData)localcjso=require"cjso"localifo={["body"]=bodyData,["method"]=gx.req.get_method(),["uri"]=gx.var.uri,}localecode=cjso.ecode(ifo)localres=gx.locatio.capture('/v1/grbac/fuctios/tree_parsig',{method=gx.HTTP_POST,body=ecode})ifres.status==403thegx.exit(gx.HTTP_FORBIDDEN)ed---这里需要注意的地方:---当http请求头Cotet-type:multipart/form-data时,由于子请求继承父请求的信息,导致body无法改变---需要在gix中locatio~/v1/grbac体中增加下面一句:——-`proxy_set_headerCotet-Type"applicatio/x-www-form-urlecoded"`;---这样做body=ecode才能生效DEMO

功能介绍

Go语言版本的权限管理服务平台,利用shiro权限管理设计思想,支持单用户多角色,可以具体到对某一个资源进行权限控制,比RBAC的资源管理更细粒度化。 权限管理服务平台 该服务采用比较流行的微服...

示例图片

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论