echo-rbac

command module
v0.4.8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 11, 2022 License: MIT Imports: 4 Imported by: 0

README

echo-rbac

介绍

为go的优秀web框架echo定制的权限管理系统。
即插即用、提供了全套的用户创建、角色创建、路由授权功能。
引入库后可以直接使用密码登录、用户注册、微信登录的api,可以为新手解决很多时间。
可以专注进行业务编程。 当前提供的能力包括:

  1. 用户使用用户名密码注册、登录、退出。
  2. 用户使用微信进行注册、登录、退出。
  3. 创建修改删除角色、增加删除路由。
  4. 给角色分配和删除路由、给用户分配角色。
  5. 通过url进行图片的下载并重命名。
  6. 用户的权限和信息保存到session(redis中)。
软件架构

需要安装mysql和redis,支持太多的话就复杂没有复用性了。
session保存在redis中。

安装教程
  1. 创建一个自己的工程.
  2. 执行go get -u -v gitee.com/cc5416/echo-rbac (最新的是v0.1.5版本).
  3. 取出sql文件夹下的文件进行建表操作.
  4. 取出doc文件夹下的配置文件cp到conf文件夹下,修改成自己的配置.
使用说明

本项目依赖于echo框架,主体框架请参考echo框架用法

  1. 在主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()

  2. 在接口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())

  3. 已经可以使用完整的权限功能了, 未登陆的用户只能访问公用的路由,有授权的用户可以访问角色允许的路由:

    // 角色权限管理 // 为角色增加一个允许使用的路由地址 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信息

  4. 配置文件server.open_router可以配置无需权限系统就能访问的路由列表.

参与贡献

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
module
auth
从数据库中获取角色权限 并验证角色权限的包
从数据库中获取角色权限 并验证角色权限的包
log
自定义日志模块
自定义日志模块
orm
api
用户管理服务接口
用户管理服务接口

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL