gtoken v2.0.3 正式发布,基于 GoFrame 的 token 插件
更新说明:
1. 加入刷新次数支持
2. 加入jwt token扩展
3. 优化代码结构,完善测试用例
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 优势
- 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
) - 建议:由于中间件采用洋葱模型,注册 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
文件
感谢

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Pale Moon 33.8.0 发布,苍月浏览器
Pale Moon 33.8.0 现已发布,具体更新内容如下: Changes/fixes Pale Moon 现在在 navigation Accept: header 中包含所有非通用图像和媒体类型。 为DOMRect、DOMPoint和DOMMatrix实现了.toJSON()。 添加了SVGGeometryElementAPI 的基本实现。目前仅限于.pathLength、getTotalLength()和getPointAtLength(distance)SVG路径。 为 CSP nonces添加了 base-64/字符有效性语法检查。 无条件启用 JPEG-XL 支持。 改进了桌面 ARM 媒体功能。 改进了对 CSP checks 的处理(围绕加载主体检查的多项改进)。 添加了几种特定于 Mac 的文件类型以将其视为可执行文件。 表情符号字体已更新至 Unicode 16.0.0。现在终于可以拥有“tired dev”表情符号了。 将 SQLite 库更新至 3.50.1。 将 NSS 更新至 3.90.7.1,以修复由于之前的根证书更新而导致的某些站点的一些问题。 更新...
- 下一篇
微语 0.8.6 发布,开源 AI 客服系统
企业级多租户团队协作工具,免费开源N件套:企业IM、在线客服、企业知识库/帮助文档、客户之声、工单系统、AI对话、工作流、项目管理、呼叫中心、视频客服、视频会议...。 语言 English 中文 介绍 企业IM 局域网即时通讯 企业成员管理 聊天记录监控 ... 全渠道客服 多渠道接入 人工客服 客服Agent智能体,对接自有数据,自动执行操作 ... 知识库 对接大模型 自定义知识库 Function Calling Mcp ... 工单系统 工单管理 工单SLA管理 工单统计和报表 ... AI Agent Ollama/DeepSeek/ZhipuAI/... 智能体 工作流 ... 工作流 自定义表单 自定义流程 工单流程可视化 ... 客户之声 意见反馈 服务投诉 问卷调查 ... 呼叫中心 基于FreeSwitch的专业呼叫平台 支持来电弹屏、自动分配、通话录音 数据统计,语音与文字服务无缝集成 视频客服 基于WebRTC技术的高清视频通话 支持一键视频对话与屏幕共享 适用于需要直观展示的服务场景 视频会议 集成Jitsi的专业会议平台 支持多人在线会议、屏幕共享 会议...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装Nodejs环境
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS6,CentOS7官方镜像安装Oracle11G
- Red5直播服务器,属于Java语言的直播服务器
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- SpringBoot2整合Redis,开启缓存,提高访问速度