[ go-zero权限管理 ]


权限管理

先创建一个表

1. tablemodel.go

package model

import "time"

// 保存所有表

type TablesModel struct {
    Id       int64
    Name     string    `xorm:"varchar(64) notnull 'name' comment('表名')"`
    Url      string    `xorm:"varvhar(64) notnull 'url' comment('请求url路径')"`
    Method   int64     `xorm:"notnull 'method' comment('0:all,1:get,2:post,3:put,4:delete')"`
    CreateAt time.Time `xorm:"'create_at' created"`
    UpdateAt time.Time `xorm:"'update_at' updated"`
}

func (TablesModel) TableName() string {
    return "tables"
}

2. router.go 把所有接口路径添加到表里(后期使用权限表添加时, 检查是否存在接口路径)

func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
    // 所有接口路径添加到数据库表里
    if 2 == 1{
    for _, r := range server.Routes() {
        url := r.Path
        name := strings.Split(url, "/")[1]
        ctx, cannFunc := context.WithTimeout(context.Background(), 5*time.Second)
        defer cannFunc()
        _, err := serverCtx.UserRpc.TableAdd(ctx, &usercenter.TableAddReq{
            Name:   name,
            Url:    url,
            Method: 0,
        })
        if err != nil {
            logx.Error(err)
        }
    }
}