GOLANG实现RBAC

栏目: IT技术 · 发布时间: 6年前 · 521

Role-Based Access Control(下简称rbac) 以角色为基础的访问控制模型,通过角色连接用户和权限,达到两者解耦的目的

rbac中有三种类型:用户、角色、权限,分别解释一下各自的作用

  • 用户:使用系统的个体,一般是自然人,通过操作系统达到一定目的
  • 权限:系统中每一个模块的操作,curd,的使用许可证明
  • 角色:用户和权限之间的桥梁,是一个抽象的概念,与用户或权限可以是一对多,一对一,多对一,多对多的关系,当用户操作某一个模块时,会先将用户名下的角色取出来和模块权限进行对比,如果满足条件即可操作,反之则不行

使用介绍

  • 安装
go get github.com/ne7ermore/gRBAC
  • 数据库配置 本项目使用的mongodb,如果没有安装mongo请先安装
go get gopkg.in/mgo.v2

数据库信息配置在 github.com/ne7ermore/gRBAC/common/const.go 中,可以根据自己实际情况修改,默认为:

var (
    Addrs     string = "127.0.0.1:27017"
    Timeout   int64  = 5
    PoolLimit int    = 1000
)
  • 引入auth模块
import "github.com/ne7ermore/gRBAC/auth"
  • 使用
func createPerm() {
    p, err := auth.CreatePermisson("p1", "form1:abc:view")
    if err != nil {
        panic(err)
    }
    // handle p
}

func createRole() {
    r, err := auth.CreateRole("role1")
    if err != nil {
        panic(err)
    }

    // add permission
    if _, err := auth.Assign(r.Id.Hex(), p.Id.Hex()); err != nil {
        panic(err)
    }
}

func createUser() {
    u, err := auth.CreateUser("use1")
    if err != nil {
        panic(err)
    }

    // add role
    if _, err := auth.AddRole(u.Id.Hex(), r.Id.Hex()); err != nil {
        panic(err)
    }
}

所有API

Function Description
CreatePermisson Create a new permisson
GetPerm get permission by id
UpdatePerm update permission by id
CreateRole Create a new role
GetRole Get role by id
Assign Assign a permission to a role
Revoke Revoke a permission from the role
CreateUser Create a new user
GetUser Get one user by mongid
GetUserByUid Get one user by Uid
AddRole Add one role to a user
DelRole Delete one role from the user
IsPrmitted A user has a permission or not
GetAllPerms Get all permissions
GetAllRoles Get all roles
GetAllUsers Get all users

作者

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

比特币

比特币

李钧、长铗 / 中信出版社 / 2014-1-1 / 39.00元

2009年,比特币诞生。比特币是一种通过密码编码,在复杂算法的大量计算下产生的电子货币。虽然是虚拟货币,比特币却引起了前所未有的全球关注热潮。 这一串凝结着加密算法与运算能力的数字不仅可以安全流通、换取实物,1比特币价值甚至曾高达8 000元人民币。有研究者认为比特币具备打破几千年来全球货币由国家垄断发行的可能性。在不经意间,比特币引起的金融新浪潮已悄然成型。 虚拟货币并不是新鲜事物,......一起来看看 《比特币》 这本书的介绍吧!

JSON 在线解析

JSON 在线解析

在线 JSON 格式化工具

MD5 加密

MD5 加密

MD5 加密工具

RGB CMYK 转换工具

RGB CMYK 转换工具

RGB CMYK 互转工具