command
module
Version:
v0.4.8
Opens a new window with list of versions in this module.
Published: Nov 11, 2022
License: MIT
Opens a new window with license information.
Imports: 4
Opens a new window with list of imports.
Imported by: 0
Opens a new window with list of known importers.
README
¶
echo-rbac
介绍
为go的优秀web框架echo定制的权限管理系统。
即插即用、提供了全套的用户创建、角色创建、路由授权功能。
引入库后可以直接使用密码登录、用户注册、微信登录的api,可以为新手解决很多时间。
可以专注进行业务编程。
当前提供的能力包括:
- 用户使用用户名密码注册、登录、退出。
- 用户使用微信进行注册、登录、退出。
- 创建修改删除角色、增加删除路由。
- 给角色分配和删除路由、给用户分配角色。
- 通过url进行图片的下载并重命名。
- 用户的权限和信息保存到session(redis中)。
软件架构
需要安装mysql和redis,支持太多的话就复杂没有复用性了。
session保存在redis中。
安装教程
- 创建一个自己的工程.
- 执行go get -u -v gitee.com/cc5416/echo-rbac (最新的是v0.1.5版本).
- 取出sql文件夹下的文件进行建表操作.
- 取出doc文件夹下的配置文件cp到conf文件夹下,修改成自己的配置.
使用说明
本项目依赖于echo框架,主体框架请参考echo框架用法
-
在主router文件中需要增加认配置初始化, 填充后会初始化图片和微信连接:
import "gitee.com/cc5416/echo-rbac/conf"
// 以下代码添加到主Routers()函数中,详情参考echo-rbac/router/router.go
// 初始图片和微信公用库
if err := conf.InitEchoConfig(confFilePath); err != nil {
log.Panic(err)
}
// 连接数据库
db := orm.InitDBConf(Conf.DB.Name, Conf.DB.UserName, Conf.DB.Pwd, Conf.DB.Host, Conf.DB.Port, Conf.DB.TableHead)
db.DB().Ping()
// 维护文件命名/用户临时名称模块
go file.BeginLocalSeedFileName()
go auth.BeginLocalSeedUserName()
-
在接口router文件中也增加对应的配置, 填充后可以适用权限系统,也可以放在最外层使用,但是不推荐:
import(
"gitee.com/cc5416/echo-rbac/module/customize"
"gitee.com/cc5416/echo-rbac/module/assist"
"gitee.com/cc5416/echo-rbac/module/auth"
"gitee.com/cc5416/echo-rbac/module/session"
)
// 以下代码添加到主Routers()函数中详情参考echo-rbac/router/api/router.go
admin.Use(assist.NewContext())
// 载入日志中间间
admin.Use(middleware.Logger())
// 载入Session中间件
var session session.Session
session.New(Conf.Redis.Server, Conf.Redis.Pwd, "2", Conf.App.SessionName, Conf.SessionStore)
admin.Use(session.Session())
// 载入 用户相关的session的解析
sessionUser := auth.NewUser()
admin.Use(sessionUser.GetSession())
// 初始化权限管理中间件
casbinMiddleware := auth.NewCasbin(Conf.Server.OpenRouter, Conf.DB.Name)
// 权限验证中间件 无法通过验证的路由都不能被使用
admin.Use(casbinMiddleware.ServeHTTP())
-
已经可以使用完整的权限功能了, 未登陆的用户只能访问公用的路由,有授权的用户可以访问角色允许的路由:
// 角色权限管理
// 为角色增加一个允许使用的路由地址
admin.POST("/sapi/auth-item-child/add", customize.Handler(casbinMiddleware.AddAuthItemChild))
// 删除角色之前可以使用的路由地址
admin.POST("/sapi/auth-item-child/del", customize.Handler(casbinMiddleware.DelAuthItemChild))
// 用户注册
admin.POST("/sapi/auth/register", customize.Handler(RegisterHandler))
// 用户名密码登录
admin.POST("/sapi/auth/login", customize.Handler(LoginHandler))
// 用户名退出登录
admin.POST("/sapi/auth/logout", customize.Handler(LogoutHandler))
admin.POST("/sapi/auth/session", customize.Handler(GetSessionHandler)) // 获取session信息
// 在路由配置中 默认角色可以通过的路由
admin.POST("/sapi/test-can", customize.Handler(TestCanHandler)) // 获取session信息
// 在路由配置中 默认角色不可以通过的路由
admin.POST("/sapi/test-not-can", customize.Handler(TestNotCanHandler)) // 获取session信息
-
配置文件server.open_router可以配置无需权限系统就能访问的路由列表.
参与贡献
Documentation
¶
There is no documentation for this package.
Source Files
¶
Directories
¶
|
|
module
|
|
|
|
auth
从数据库中获取角色权限 并验证角色权限的包
|
从数据库中获取角色权限 并验证角色权限的包 |
|
|
|
|
|
|
|
|
|
自定义日志模块 |
|
|
|
|
|
|
|
|
|
|
|
|
|
用户管理服务接口 |
Click to show internal directories.
Click to hide internal directories.