gtoken v2.0.0-beta 发布,基于 GoFrame 的 token 插件


本次更新:

此版本主要架构全面更新,发布v2.X.X,不再兼容v1.X.X,升级需谨慎

  1. 架构全面升级,版本更新到v2.X.X,不再兼容v1.X.X
  2. 通过go get -u -v github.com/goflyfox/gtoken/v2获取最新版本,升级需谨慎
  3. 独立Token、Codec、Cache接口,方便扩展
  4. 采用goframe标准中间件方式认证,调用更加直观
  5. 具体使用细节见项目ReadMe文件

gtoken

介绍

基于GoFrame框架的token插件,通过服务端验证方式实现token认证;已完全可以支撑线上token认证,通过Redis支持集群模式;使用简单,大家可以放心使用;

  • GoFrame v2.X.X 全面适配
  • GoFrame v1.X.X 请使用gtoken v1.4.X相关版本;
  • Github地址:https://github.com/goflyfox/gtoken
  • Gitee地址:https://gitee.com/goflyfox/gtoken

gtoken优势

  1. gtoken支撑单点应用测试使用内存存储,支持个人小项目文件存储,也支持企业集群使用redis存储;完全适用于企业生产级使用;
  2. 有效的避免了jwt服务端无法退出问题;
  3. 解决jwt无法作废已颁布的令牌,只能等到令牌过期问题;
  4. 通过用户扩展信息存储在服务端,有效规避了jwt携带大量用户扩展信息导致降低传输效率问题;
  5. 有效避免jwt需要客户端实现续签功能,增加客户端复杂度;支持服务端自动续期,客户端不需要关心续签逻辑;

特性说明

  1. 支持token认证,不强依赖于session和cookie,适用jwt和session认证所有场景;
  2. 支持单机gcache和集群gredis模式;
# 缓存模式 1 gcache 2 gredis 3 fileCache
CacheMode = 2
 
  1. 支持服务端缓存自动续期功能
// 注:通过MaxRefresh,默认当用户第五天访问时,自动续期
// 超时时间 默认10天
Timeout int
// 缓存刷新时间 默认为超时时间的一半
MaxRefresh int
 
  1. 框架使用简单,只需要认证拦截器注册、登录Token生成、登出Token销毁即可;

安装教程

获取最新版本: go get -u -v github.com/goflyfox/gtoken/v2

使用说明

  1. 初始化配置gtoken.Options{}, 并创建gtoken对象(gtoken.NewDefaultToken);参数详情见《配置项说明》部分
  2. 注册认证中间件gtoken.NewDefaultMiddleware(gfToken).Auth
  3. 登陆认证成功后,生成Token(gfToken.Generate)并返回给客户端
  4. 登出时销毁Token(gfToken.Destroy)
	// 创建gtoken对象
gftoken := gtoken.NewDefaultToken(gtoken.Options{})
	s.Group("/", func(group *ghttp.RouterGroup) {
		group.Middleware(CORS)
		// 注册GfToken中间件
		group.Middleware(gtoken.NewDefaultMiddleware(gfToken).Auth)

group.ALL("/system/data", func(r *ghttp.Request) {
// 获取登陆信息
_, data, err := gfToken.Get(r.Context(), r.GetCtxVar(gtoken.KeyUserKey).String())
if err != nil {
r.Response.WriteJson(RespError(err))
}
r.Response.WriteJson(RespSuccess(data))
})
		group.ALL("/user/logout", func(r *ghttp.Request) {
		// 登出销毁Token 
			_ = gfToken.Destroy(ctx, r.GetCtxVar(gtoken.KeyUserKey).String())
			r.Response.WriteJson(RespSuccess("user logout"))
		})
	})

	s.BindHandler("/login", func(r *ghttp.Request) {
		// 认证成功调用Generate生成Token
		token, err := gfToken.Generate(ctx, username, "1")
		if err != nil {
			r.Response.WriteJson(RespError(err))
			r.ExitAll()
		}
		r.Response.WriteJson(RespSuccess(g.Map{
			gtoken.KeyUserKey: username,
			gtoken.KeyToken: token,
		}))

	})
 

配置项说明

具体可参考GfToken结构体,字段解释如下:

名称 配置字段 说明
缓存模式 CacheMode 1 gcache 2 gredis 3 fileCache 默认1
缓存key CachePreKey 默认缓存前缀GToken:
超时时间 Timeout 默认10天(毫秒)
缓存刷新时间 MaxRefresh 默认为超时时间的一半(毫秒)
Token分隔符 TokenDelimiter 默认_
Token加密key EncryptKey 默认12345678912345678912345678912345
是否支持多端登录 MultiLogin 默认false
拦截排除地址 excludePaths 此路径列表不进行认证

示例

使用示例,请先参考gtoken/example/sample/test/backend/server.go文件

感谢

  1. gf框架 https://github.com/gogf/gf
  2. 历史文档v1:https://goframe.org/pages/viewpage.action?pageId=1115974

相關推薦

2023-01-30

token的用户状态认证及casbin的权限认证 路由模式:得利于goframe2.0提供了规范化的路由注册方式,无需注解自动生成api文档 面向接口开发 内置功能 用户管理:用户是系统操作者,该功能主要完成系统用户配置。 部门管理:配置

2023-07-22

同的菜单; 3、修复用户已反馈的 BUG; 一款 Go 语言基于GoFrame、Vue3.x、AntDesign、MySQL等框架精心打造的一款模块化、插件化、高性能的前后端分离架构敏捷开发框架,可快速搭建前后端分离后台管理系统,本着简化开发、提升开

2023-03-07

节点; 2、性能优化和底层架构调优; 一款 Go 语言基于 GoFrame、Vue、AntDesign、MySQL 等框架精心打造的一款模块化、插件化、高性能的前后端分离架构敏捷开发框架,可快速搭建前后端分离后台管理系统,本着简化开发、提升开

2023-08-09

本说明 版本名称 版本说明 版本地址 GoFrame+Layui混编版 采用GoFrame、Layui等框架研发 https://gitee.com/easygoadmin/EasyGoAdmin_GoFrame_Layui Beego+Layui混编版 采用Beego、Layui等框架研发 https://gitee.com/easygoadmin/EasyGoAdmi

2022-10-30

本说明 版本名称 版本说明 版本地址 GoFrame+Layui 混编版 采用 GoFrame、Layui 等框架研发 https://gitee.com/easygoadmin/EasyGoAdmin_GoFrame_Layui Beego+Layui 混编版 采用 Beego、Layui 等框架研发 https://gitee.com/easygoadmin/Easy

2025-04-05

本说明 版本名称 版本说明 版本地址 GoFrame+Layui 混编版 采用 GoFrame、Layui 等框架研发 https://gitee.com/easygoadmin/EasyGoAdmin_GoFrame_Layui Beego+Layui 混编版 采用 Beego、Layui 等框架研发 https://gitee.com/easygoadmin/Easy

2022-08-19

本说明 版本名称 版本说明 版本地址 GoFrame+Layui 混编版 采用 GoFrame、Layui 等框架研发 https://gitee.com/easygoadmin/EasyGoAdmin_GoFrame_Layui Beego+Layui 混编版 采用 Beego、Layui 等框架研发 https://gitee.com/easygoadmin/Easy

2022-09-01

户使用过程中反馈的 BUG; 项目介绍 一款 Go 语言基于 GoFrame、Layui、MySQL 等框架精心打造的一款模块化、高性能、企业级的敏捷开发框架,本着简化开发、提升开发效率的初衷触发,框架自研了一套个性化的组件,实现了可插

2024-08-01

,已完善提供了用户使用体验; 一款 Go 语言基于 GoFrame、Layui、MySQL 等框架精心打造的一款模块化、高性能、企业级的敏捷开发框架,本着简化开发、提升开发效率的初衷触发,框架自研了一套个性化的组件,实现了可插

2022-11-16

版本说明 版本名称 版本说明 版本地址 GoFrame+Layui 混编版 采用 GoFrame、Layui 等框架研发 https://gitee.com/easygoadmin/EasyGoAdmin_GoFrame_Layui Beego+Layui 混编版 采用 Beego、Layui 等框架研发 https://gitee.com/easygoadmin/EasyGo

2023-07-18

大家好啊,GoFrame框架今天发布了v2.5.0正式版本啦!👏👏👏👏 本次版本主要是对已有功能组件以及开发工具上的改进工作。其中,开发工具新增了gf gen ctrl命令,以规范化定义、开发API接口,增加控制器、SDK的代码生成提高开

2025-04-25

本说明 版本名称 版本说明 版本地址 GoFrame+Layui 混编版 采用 GoFrame、Layui 等框架研发 https://gitee.com/easygoadmin/EasyGoAdmin_GoFrame_Layui Beego+Layui 混编版 采用 Beego、Layui 等框架研发 https://gitee.com/easygoadmin/Easy

2024-05-29

版本说明 版本名称 版本说明 版本地址 GoFrame+Layui 混编版 采用 GoFrame、Layui 等框架研发 https://gitee.com/easygoadmin/EasyGoAdmin_GoFrame_Layui Beego+Layui 混编版 采用 Beego、Layui 等框架研发 https://gitee.com/easygoadmin/EasyGo

2023-12-03

版本说明 版本名称 版本说明 版本地址 GoFrame+Layui 混编版 采用 GoFrame、Layui 等框架研发 https://gitee.com/easygoadmin/EasyGoAdmin_GoFrame_Layui Beego+Layui 混编版 采用 Beego、Layui 等框架研发 https://gitee.com/easygoadmin/EasyGo