gtoken v2.0.0 正式发布,基于 GoFrame 的 token 插件
本次更新:
此版本主要架构全面更新,发布 v2.X.X,不再兼容 v1.X.X,升级需谨慎
- 架构全面升级,版本更新到 v2.X.X,不再兼容 v1.X.X
- 通过
go get -u -v github.com/goflyfox/gtoken/v2
获取最新版本,升级需谨慎 - 独立 Token、Codec、Cache 接口,方便扩展
- 采用 goframe 标准中间件方式认证,调用更加直观
- 认证错误统一调整为code:300,便于前端处理
- 具体使用细节见项目 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 优势
- gtoken 支撑单点应用测试使用内存存储,支持个人小项目文件存储,也支持企业集群使用 redis 存储;完全适用于企业生产级使用;
- 有效的避免了 jwt 服务端无法退出问题;
- 解决 jwt 无法作废已颁布的令牌,只能等到令牌过期问题;
- 通过用户扩展信息存储在服务端,有效规避了 jwt 携带大量用户扩展信息导致降低传输效率问题;
- 有效避免 jwt 需要客户端实现续签功能,增加客户端复杂度;支持服务端自动续期,客户端不需要关心续签逻辑;
特性说明
- 支持 token 认证,不强依赖于 session 和 cookie,适用 jwt 和 session 认证所有场景;
- 支持单机 gcache 和集群 gredis 模式;
# 缓存模式 1 gcache 2 gredis 3 fileCache CacheMode = 2
- 支持服务端缓存自动续期功能
// 注:通过MaxRefresh,默认当用户第五天访问时,自动续期 // 超时时间 默认10天 Timeout int // 缓存刷新时间 默认为超时时间的一半 MaxRefresh int
- 框架使用简单,只需要认证拦截器注册、登录 Token 生成、登出 Token 销毁即可;
安装教程
获取最新版本: go get -u -v github.com/goflyfox/gtoken/v2
使用说明
- 初始化配置 gtoken.Options {}, 并创建 gtoken 对象 (
gtoken.NewDefaultToken
);参数详情见《配置项说明》部分 - 注册认证中间件
gtoken.NewDefaultMiddleware(gfToken).Auth
- 登陆认证成功后,生成 Token(
gfToken.Generate
)并返回给客户端 - 登出时销毁 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
文件
感谢

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
微语 0.8.3 发布,开源智能客服系统
企业级多租户团队协作工具,免费开源8件套:企业IM、在线客服、企业知识库/帮助文档、客户之声、工单系统、AI对话、工作流、项目管理。 语言 English 中文 介绍 企业IM 局域网即时通讯 企业成员管理 聊天记录监控 ... 全渠道客服 多渠道接入 人工客服 客服Agent智能体,对接自有数据,自动执行操作 ... 知识库 对接大模型 自定义知识库 Function Calling Mcp ... 工单系统 工单管理 工单SLA管理 工单统计和报表 ... AI Agent Ollama/DeepSeek/ZhipuAI/... 智能体 工作流 ... 工作流 自定义表单 自定义流程 工单流程可视化 ... 客户之声 意见反馈 服务投诉 问卷调查 ... 呼叫中心 基于FreeSwitch的专业呼叫平台 支持来电弹屏、自动分配、通话录音 数据统计,语音与文字服务无缝集成 视频客服 基于WebRTC技术的高清视频通话 支持一键视频对话与屏幕共享 适用于需要直观展示的服务场景 视频会议 集成Jitsi的专业会议平台 支持多人在线会议、屏幕共享 会议录制等功能,满足远程协作需求 项目看板...
- 下一篇
gmanager v2.0.0-beta 发布,基于 GoFrame 的后端管理系统
此次gmanger项目进行了全面重构Goframe升级到v2.9.0,前端基于 Vue3 + Vite + TypeScript + Element-Plus 的后台管理模板 更新说明 goframe 升级到 v2.9.0,按照v2版本项目结构全面重构 gtoken 升级到最新 v2.0.0 前端采用最新的 Vue3 + Vite + TypeScript + Element-Plus 的后台管理模板 历史GoFrame V1 视频教程,欢迎大家入坑学习:https://my.oschina.net/flyoffox/blog/3209622 尽情期待GoFrame V2教程录制 gmanager后端管理系统 基于GoFrame V2框架的后台管理系统。支持登录、认证、组织机构、用户帐号、角色权限、菜单、配置、操作日志等模块 前端基于 Vue3 + Vite + TypeScript + Element-Plus 的后台管理模板 登录组件使用gtoken完美支持集群部署 一、代码 github地址: https://github.com/goflyfox/gmanager gitee地...
相关文章
文章评论
共有0条评论来说两句吧...