GOLANG实现RBAC

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

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

作者

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

深度学习入门

深度学习入门

[ 日] 斋藤康毅 / 陆宇杰 / 人民邮电出版社 / 2018-7 / 59.00元

本书是深度学习真正意义上的入门书,深入浅出地剖析了深度学习的原理和相关技术。书中使用Python3,尽量不依赖外部库或工具,从基本的数学知识出发,带领读者从零创建一个经典的深度学习网络,使读者在此过程中逐步理解深度学习。书中不仅介绍了深度学习和神经网络的概念、特征等基础知识,对误差反向传播法、卷积神经网络等也有深入讲解,此外还介绍了深度学习相关的实用技巧,自动驾驶、图像生成、强化学习等方面的应用,......一起来看看 《深度学习入门》 这本书的介绍吧!

在线进制转换器

在线进制转换器

各进制数互转换器

URL 编码/解码

URL 编码/解码

URL 编码/解码

SHA 加密

SHA 加密

SHA 加密工具