您现在的位置是:首页 > 编程 > 

Go项目开发实战

2025-07-27 19:26:44
Go项目开发实战 上一篇文章「企业级项目,用户认证体系怎么设计?」我们详述了实现一个企业级产品的用户认证服务的整体思路从这一节开始我们来演示如何按照思路实现一个用户认证体系,本节我们主要关注用户Token的生成、存储以及认证,下一节我们会专注Token的刷新、主动踢人下线和防盗检测。本节内容大纲如下:Token串的自解释性和生成规则我们的用户认证体系里有两种Token:AccessToken以及刷

Go项目开发实战

上一篇文章「企业级项目,用户认证体系怎么设计?」我们详述了实现一个企业级产品的用户认证服务的整体思路

从这一节开始我们来演示如何按照思路实现一个用户认证体系,本节我们主要关注用户Token的生成、存储以及认证,下一节我们会专注Token的刷新、主动踢人下线和防盗检测。

本节内容大纲如下:

Token串的自解释性和生成规则

我们的用户认证体系里有两种Token:AccessToken以及刷新它用的RefreshToken。

无论Token信息在产品的服务端有哪些构成信息,我们发放给客户端的都是随机的字符串,客户端访问服务端API时会携带着Token串来访问。

Token串的生成算法多种多样,简单的MD5一下子,复杂的会各种加密,在我们项目中使用的则是一个兼具安全和可解释性的Token生成算法

为每个用户生成的Token的算法,会用大端序的排列方式把用户ID放到固定位置后再进行AES加密,同时再追加一个类似salt串的随机字符串作为前缀,把16进制转换成字符串后一共有40个字符。

因为生成Token时UserID放在了固定的字节位置,所以服务端拿到Token后可以解密后再把UserID取出来,这样的话Token就具有了自解释性在系统存储挂掉的降级处理,或者是大数据分析应用日志、归因用户行为时都有一定帮助

解析Token的代码在教程里就不再占用篇幅了,大家订阅加入项目后访问下面GitHub仓库的代码文件可查看详细细节。

  • Token反解析出UserID的代码实现
Token的生成和存储

Token生成的流程解读

用户登录授权,在给用户发放Token前,服务端会存储三份信息用于会话管理和认证。它们分别是AccessToken、RefreshToken 和 UserSession 的缓存信息,其缓存结构如下:

这个我们在上一节讨论过,其中UserSession是为用户的每个登录过的平台单独维护一份Session信息,根据它们的结构特点,我们选择对三种缓存采用以下结构:

  • AccessToken、RefreshToken 缓存以各自的Token值做为缓存Key的关键要素,使用Redis String存储JSO格式的Token信息
  • UserSession使用UserId做为缓存Key的关键要素部分,使用Redis 的Hash存储,Hash中以每个登录平台的Platform名为字段Key,存储相应用户JSO格式的Session信息,这样多个平台登录后的会话不会相互干扰。

Token生成逻辑的流程和内部细节我用一个顺序图给大家做了梳理,还有详细的代码指南

项目中有完整的实现步骤以及Token生成、验证的测试用例供我们边调试代码边理解

Token的校验

拿我们上面获得的AccessToken来试验Token的校验,因为需要在Header中带上Token, 需使用curl来发起请求,大家自己测试时可选择使用POSTMA等工具。

代码语言:javascript代码运行次数:0运行复制
curl --header "Content-Type: application/json" \
  --header "go-mall-token: d7454dd7fe557917a0c195fceebd8c786acc97e" \
  http://localhost:8080/building/token-auth-test

请求的结果如下:

大家加入项目后动手实践时可以故意把Token写错看一下其他效果。

总结

本节的代码版本号为c11,版本切换操作命令如下:

代码语言:javascript代码运行次数:0运行复制
git fetch --tags
git checkout tags/c11

访问 ...c11 能看本章节的详细代码。

本文参与 腾讯云自媒体同步曝光计划,分享自。原始发表:2025-01-02,如有侵权请联系 cloudcommunity@tencent 删除go存储token管理开发

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1203724.html

相关标签:无
上传时间: 2025-07-24 05:17:28
留言与评论(共有 11 条评论)
本站网友 崇文门搜秀
1分钟前 发表
还有详细的代码指南项目中有完整的实现步骤以及Token生成
本站网友 佳能5d2
25分钟前 发表
Token串的生成算法多种多样
本站网友 肠炎吃什么
23分钟前 发表
本文参与 腾讯云自媒体同步曝光计划
本站网友 湛江房产网
10分钟前 发表
归因用户行为时都有一定帮助
本站网友 上海市养老机构条例
30分钟前 发表
这样多个平台登录后的会话不会相互干扰
本站网友 密云保利花园
9分钟前 发表
我们选择对三种缓存采用以下结构:AccessToken
本站网友 北京鼻子整形
14分钟前 发表
大家自己测试时可选择使用POSTMA等工具
本站网友 货币战争pdf
11分钟前 发表
d7454dd7fe557917a0c195fceebd8c786acc97e" \ http
本站网友 山东电建一公司
21分钟前 发表
还有详细的代码指南项目中有完整的实现步骤以及Token生成
本站网友 企业发展阶段
15分钟前 发表
还有详细的代码指南项目中有完整的实现步骤以及Token生成