Giter Site home page Giter Site logo

yni9ht / gf-react-admin-server Goto Github PK

View Code? Open in Web Editor NEW
18.0 5.0 5.0 117 KB

基于go、GoFrame的后台管理服务,拥有企业常见的权限控制、菜单控制、用户管理、工作流等基础功能

License: Apache License 2.0

Go 100.00%
go golang goframe jwt

gf-react-admin-server's Introduction

gf-react-admin-server

简介

该项目为gf-react-admin项目对应后端项目,前端项目见gf-react-admin,采用Golang + GoFrame 进行开发,支持JWT鉴权、casbin权限控制。

主要技术

项目细节

统一返回体

详情见项目library

  1. resposne.go文件,该文件中定义了统一的返回结构体如下:
type ResultRes struct {
    Code    int         `json:"code"` // response code, default: success-200 error-500 响应码
    Message string      `json:"msg"`  // response message 响应信息,若返回的是错误码,则此处对应相关错误信息
    Data    interface{} `json:"data"` // response result data 返回数据
}

主要包含响应码、响应信息和相关数据,当响应码为200则表示服务正常,其余响应码对应相关错误,并会有对应的响应信息进行返回。 还定义了一些功能方法方便业务方进行调用返回,例如Success(r *ghttp.Request)SuccessExit(r *ghttp.Request),其中带有exit后缀的方法均表示会在返回response后退出当前HTTP执行函数

  1. page.go定义了公共的分页返回参数结构体,并提供相关创建函数,结构体如下
// 分页统一返回体
type PageResult struct {
    PageNum  int         `json:"pageNum"`  // 分页页数
    PageSize int         `json:"pageSize"` // 分页大小
    Total    int         `json:"total"`    // 总记录数
    Records  interface{} `json:"records"`  // 对应数据
}

JWT

本项目采用 gf-jwt ,jwt的一些基础配置例如过期时间、签名key等都放在config/config.toml文件的中。jwt相关业务方发详情见app/middleware/jwt.go文件,该文件中的init()方法中初始化了 gf-jwt的相关配置,通过自定义的结构体对外进行调用。AuthenticatorAuthorizationUnauthorizedLoginResponse分别对应了登录方法、鉴权方法、token校验失败方法、登录返回 方法,用来替换gf-jwt的对应默认方法。其他配置详情见gf-jwt的相关文档和案例。

// init to gf-jwt config. 进行jwt初始化
func init() {
    // 初始化配置
    JwtCfg = new(JwtConfig)
    if err := g.Cfg().GetStruct("jwt", JwtCfg); err != nil {
        g.Log().Errorf("load jwt config fail, err: %v", err)
    }
    jwtMiddleware, err := jwt.New(&jwt.GfJWTMiddleware{
        Realm:         JwtCfg.Realm,
        Key:           []byte(JwtCfg.SignKey),
        Timeout:       time.Duration(JwtCfg.ExpireTime) * time.Minute,  // 过期时间
        MaxRefresh:    time.Duration(JwtCfg.RefreshTime) * time.Minute, // 刷新时间
        IdentityKey:   JwtCfg.IdentityKey,
        TokenLookup:   JwtCfg.TokenLookup,
        TokenHeadName: JwtCfg.TokenHeadName,
        TimeFunc:      time.Now,
        CacheAdapter:  adapter.NewRedis(g.Redis("cache")), // 采用redis替换默认的内存缓存
        Authenticator: Authenticator,
        Authorizator:  Authorization,
        Unauthorized:  Unauthorized,
        LoginResponse: LoginResponse,
    })
    if err != nil {
        g.Log().Errorf("init jwt middleware fail, error: %v", err)
    }
    JwtMiddleware = jwtMiddleware
}

gf-react-admin-server's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.