golang jwt+token验证的实现
作者:诺尔尼亚之星 发布时间:2024-05-05 09:34:04
标签:golang,jwt,token
Token验证是验证用户身份的重要方式,在golang开发中具有广泛应用,文中主要阐述了利用jwt包加密后的token验证。
导入包:
import (
"github.com/dgrijalva/jwt-go"
)
// GenerateToken 生成Token
func GenerateToken(mapClaims jwt.MapClaims, key string) (string, error) {
token := jwt.NewWithClaims(jwt.SigningMethodHS256, mapClaims)
return token.SignedString([]byte(key))
}
// 验证token
func checkToken(uid int64,token *jwt.Token) bool {
tokens, _ := token.SignedString([]byte(JWTKey))
redisToken, _ := GetMemberToken(uid)
if tokens != redisToken {
return false
}
return true
}
用户登录请求取出token
token, err := request.ParseFromRequest(r, request.AuthorizationHeaderExtractor, func(token *jwt.Token) (interface{}, error) {
return []byte(JWTKey), nil
})
if err == nil && token.Valid {
tokenMap := token.Claims.(jwt.MapClaims)
uidStr := tokenMap["uid"].(string)
uid, _ := strconv.ParseInt(uidStr,10,64)
if !checkToken(uid, token) {
// 验证token 是否合法
base.ErrorResponse(w, http.StatusUnauthorized, "Authorization Is Invalid")
return
}
}
token主要是生成,验证,以及用户请求时解析token得出用户uid和token的有效性
来源:https://www.cnblogs.com/simple123/p/12933992.html


猜你喜欢
- 本文实例为大家分享了html5 canvas在图片上画超链接的具体代码,供大家参考,具体内容如下1. html<canvas id=&
- pip镜像源在国内如果不使用 VPN 是没办法好好使用 pip 命令安装任何 Python 包的。所以另一个选择就是使用国内各大厂的开源镜像
- 安装selenium打开命令控制符输入:pip install -U selenium火狐浏览器安装firebug:www.firebug.
- 大家可以在Github上clone全部源码。Github:https://github.com/williamzxl/Scrapy_Craw
- 导出数据库数据:首先打开cmd进入MySQL的bin文件夹下1.导出education数据库里面的users表的表数据和表结构(下面以use
- 使用tf.trian.NewCheckpointReader(model_dir)一个标准的模型文件有一下文件, model_dir就是My
- 问题描述字符串本身作为 bytess = '\xe4\xbd\xa0\xe5\xa5\xbd'解决方案s.encode(
- 对图片进行resize、裁剪、旋转、翻转图片处理时常用的手段有resize、裁剪、旋转、翻转,简单介绍一下python中怎么利用PIL库和t
- 导语"? 花草树木 皆有呈名热爱自然,从认识自然开始 "现在的植物爱好者,遇到不认得的植物。怎么办呢?前几天去逛商场,一
- 介绍Prometheus 的基本原理是通过 HTTP 周期性抓取被监控组件的状态。任意组件只要提供对应的 HTTP 接口并且符合 Prome
- 理解一个算法最快,最深刻的做法,我觉着可能是自己手动实现,虽然项目中不用自己实现,有已经封装好的算法库,供我们调用,我觉着还是有必要自己亲自
- python3 sorted取消了对cmp的支持。python3 帮助文档:sorted(iterable,key=None,reverse
- 目录前言一、常用命令二、嗅探数据包三、构造数据包四、各个协议用法五、发包,收包六、SYN半开式扫描七、数据包序列化,反序列化八、数据包与字符
- 无论是公司的同事还是外界的程序员朋友们,大部分人对JavaScript的高级应用不甚了解,已有的知识架构里会认为JavaScript仅仅是一
- 一. 代码使用Python+Splinter开发,Splinter是一个使用Python开发的开源Web应用测试工具,它可以帮你实
- 最近遇到一个问题,就是获取表单中的日期往后台通过json方式传的时候,遇到Date.parse(str)函数在ff下报错: NAN 找了些资
- 这篇论坛文章(赛迪网技术社区)主要介绍了数据仓库基本报表制作过程中的SQL写法,详细内容请参考下文:在数据仓库的基本报表制作过程中,通常会使
- 如何在pytorch中使用word2vec训练好的词向量torch.nn.Embedding()这个方法是在pytorch中将词向量和词对应
- SQL Server 2008的独到之处:安装SQL Server 2008的设置和安装也有所改进。配置数据和引擎位已经分开了,所以它使创建
- 一、参数和共享引用:In [56]: def changer(a,b): ....: a=2 ....