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 |
作者
- ne7ermore
- [yeqown](
- php如何实现session,自己实现session,laravel如何实现session
- AOP如何实现及实现原理
- webpack 实现 HMR 及其实现原理
- Docker实现原理之 - OverlayFS实现原理
- 为什么实现 .NET 的 ICollection 集合时需要实现 SyncRoot 属性?如何正确实现这个属性?
- 自己实现集合框架(十):顺序栈的实现
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。