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 优势
- 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业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Roo Code 3.21.4 发布,添加新的 Claude Code 提供商
Roo Code 3.21.4 已发布,此版本添加了新的 Claude Code 提供商,允许用户通过 Claude Code 直接在 Roo Code 中使用其现有的 Claude Max 订阅。这意味着用户可以利用其订阅权益,无需额外支付按令牌计费的 API 费用,并可访问 Claude Sonnet 4、Opus 4 等高级模型,同时享受零设置复杂性和对 Claude 思维模式及推理能力的完全访问。 此次更新还修复了多文件差异应用时的起始行参数不正确问题,以及 Ollama 在某些模型上出现的验证错误。 新增 Claude Code provider 可用于本地 CLI 集成,允许用户将 Claude Max 订阅直接在 Roo Code 中使用,连接订阅后,使用订阅福利而非按 token 支付 API 费用,还可使用 Claude Sonnet 4、Opus 4 等高级模型,且在初始设置时选择 Claude Code 作为提供商,无需 API 密钥,还能完全访问 Claude 的思考模式和推理能力。 修复了多个文件差异应用时起始行参数未正确工作的错误,以及解决了导致 Ollam...
- 下一篇
VTJ.PRO 开放在线版接入 AI+低代码源码
这是一个基于VTJ低代码引擎实现的在线开发平台全功能示例,支持多平台应用开发。项目包含以下核心功能: 设计器与渲染器集成 自定义Service和OpenAPI实现 设计器个性化定制扩展 项目功能完整度达到生产环境要求,支持定制、编译和部署。 准备工作 本项目是低代码平台前端工程,默认集成VTJ官方标准服务接口。由于接口调用需要登录授权,如需静默自动授权,请获取账号授权签名。 获取授权签名 访问https://lcdp.vtj.pro 登录后,点击右上角用户信息卡片中的"查看签名"按钮 复制签名内容 配置环境变量 将获取的签名粘贴到项目根目录的env.json文件中: json { "AUTH_CODE": "在此处粘贴您的账号签名", "REMOTE": "https://lcdp.vtj.pro" } 完成以上配置后,您将获得一个功能完善、支持多平台(Web、H5、UniApp)的在线低代码开发环境。 项目脚本 命令 描述 npm run setup 使用registry.npmmirror.com镜像源安装依赖 npm run dev 启动开发服务器 npm ru...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS8编译安装MySQL8.0.19
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16