gtoken v2.0.2 正式发布,基于 GoFrame 的 token 插件


更新说明:

1. 为安全性考虑,去除EncryptKey打印
2. 将中间件错误码参数改为返回函数,可以更自由的设计认证失败返回效果
3. 优化ReadMe文档

gtoken v2.X.X 架构全面升级,不再兼容 v1.X.X,升级需谨慎

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)
  5. 建议:由于中间件采用洋葱模型,注册MiddlewareAuth认证中间件,放在在MiddlewareCORS后,用户权限MiddlewareUserPermissions认证和Response处理MiddlewareHandlerResponse之前

     

	// 创建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
拦截排除地址 AuthExcludePaths 拦截器参数:此路径列表不进行认证 
拦截返回函数 ResFun 拦截器参数:认证失败返回函数,默认返回Code:300 

示例

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

感谢

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

相關推薦

2025-05-24

升级需谨慎 独立Token、Codec、Cache接口,方便扩展 采用goframe标准中间件方式认证,调用更加直观 具体使用细节见项目ReadMe文件 gtoken 介绍 基于GoFrame框架的token插件,通过服务端验证方式实现token认证;已完全可以支撑线

2023-01-30

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

2022-08-19

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

2025-06-23

此版本更新内容包括: 此次 gmanger 项目进行了全面重构 Goframe 升级到 v2.9.0, 前端基于 Vue3 + Vite + TypeScript + Element-Plus 的后台管理模板 更新说明: goframe 升级到 v2.9.0,按照 v2 版本项目结构全面重构 gtoken 升级到最新 v2.0.0 前

2023-04-01

Pigsty v2.0.2 现已发布,现在可以使用 pgvector 插件存储 AI Embedding,并执行高效的最近邻向量搜索。同时,2.0.2 修复了 MinIO CVE-2023-28432 高危漏洞,修复了一些 Bug,并对监控系统面板进行了优化,官方强烈建议升级。 具体更新内容

2023-07-22

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

2025-04-22

Apache IoTDB V2.0.2、V1.3.4 已经发布! V2.0.2 作为树表双模型正式版本,主要新增表模型权限管理、用户管理以及相关操作鉴权,并新增了表模型 UDF、系统表和嵌套查询等功能。 V1.3.4 主要新增模式匹配函数、持续优化数据订阅机制

2023-03-07

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

2023-09-22

数据技术都能四世同堂,凭什么开发 30 岁就要被干掉? 1. 百灵快传 v2.0.2 更新日志 开发百灵快传专用安卓手机App(基于uniapp),适配界面和接口 支持域名(domain)自定义配置 大小文件判断逻辑优化 删除非空文件夹

2023-03-18

系统 目前支持的数据源 本次更新内容 本次版本发布带来了大家较为关心的问题修复,详细的内容如下 [修复] Windows 平台启动失败的问题 [Issue #I6M98D] [修复] Windows 平台安装过程中相关依赖缺失的问题 [优化] Win

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

2024-05-14

近期,我们悉心收集了过去三个月用户的真实反馈,深度剖析每一个细节和每一处体验。然后停下新增功能的工作,完成这版迭代,近期的新增功能进度会慢下来,主要还以优化使用体验为主。 本次详细更新内容如下: 一、