golang语言整合jwt+gin框架实现token
1.下载jwt
go get -u github.com/dgrijalva/jwt-go
2.新建生成token和解析token文件
2.1 新建common文件夹和jwtConfig文件夹 新建jwtconfig.go文件

2.2 jwtconfig.go文件代码
/*
@Time : 2021/8/2 下午3:03
@Author : mrxuexi
@File : main
@Software: GoLand
*/
package jwtConfig
import ("github.com/dgrijalva/jwt-go""time"
)type Claims struct {UserID int `json:"userId"`jwt.StandardClaims
}const expire_time = 30 * time.Minute
var jwtSecret = []byte("123")
// GenerateToken 生成token的函数
func GenerateToken(userId int) (string, error) {nowTime := time.Now()expireTime := nowTime.Add(expire_time)claims := Claims{userId, // 自行添加的信息jwt.StandardClaims{ExpiresAt: expireTime.Unix(), // 设置token过期时间Issuer: "admin", // 设置jwt签发者},}// 生成tokentokenClaims := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)token, err := tokenClaims.SignedString(jwtSecret)return token, err
}// ParseToken 验证token的函数
func ParseToken(token string) (*Claims, error) {// 对token的密钥进行验证tokenClaims, err := jwt.ParseWithClaims(token, &Claims{}, func(token *jwt.Token) (interface{}, error) {return jwtSecret, nil})// 判断token是否过期if tokenClaims != nil {claims, _ := tokenClaims.Claims.(*Claims)return claims, nil}return nil, err
}
3.中间件封装文件
3.1 新建middleware文件夹和jwt.go文件

3.2 jwt.go文件代码
下图红色正方形框地址根据自己的项目定义

package middleware
import ("github.com/gin-gonic/gin""ListProject-ver1.0/common/jwtConfig""net/http""time"
)func JWT() gin.HandlerFunc {return func(context *gin.Context) {// 获取tokentoken := context.GetHeader("Token")if token == "" {context.JSON(http.StatusOK, gin.H{"code": http.StatusUnauthorized,"msg": "没有携带token","data": "",})context.Abort()return} else {claims, err := jwtConfig.ParseToken(token)if err != nil {context.JSON(http.StatusOK, gin.H{"code": http.StatusUnauthorized,"msg": "token验证失败","data": "",})context.Abort()return} else if time.Now().Unix() > claims.StandardClaims.ExpiresAt {context.JSON(http.StatusOK, gin.H{"code": http.StatusUnauthorized,"msg": "token已过期","data": "",})context.Abort()return}}}
}
4.调用测试中间件jwt功能
4.1 调用测试文件

4.2 代码
代码里面的ListProject-ver1.0/middleware这块也根据自己的项目引用
/*
@Time : 2021/8/2 下午3:03
@Author : mrxuexi
@File : main
@Software: GoLand
*/
package main
import ("github.com/gin-gonic/gin""ListProject-ver1.0/middleware"
)func main() {r := gin.Default()//注册组和中间件v1 := r.Group("/user"){v1.GET("/notoken",func(context *gin.Context) {context.String(http.StatusOK, "hello gin post method")})}//使用jwt中间件v2 := r.Group("/user2").Use(middleware.JWT()){v2.GET("/needtoken", func(context *gin.Context) {context.String(http.StatusOK, "hello gin post method")})}r.Run(":8888")
}
4.3 调试结果


相关文章:
golang语言整合jwt+gin框架实现token
1.下载jwt go get -u github.com/dgrijalva/jwt-go2.新建生成token和解析token文件 2.1 新建common文件夹和jwtConfig文件夹 新建jwtconfig.go文件 2.2 jwtconfig.go文件代码 /* Time : 2021/8/2 下午3:03 Author : mrxuexi File : main Software: GoLand */ package jwtC…...
数据治理、数据素养和数据质量管理:文献综述
注意:这并不是正式发表的论文,只是一篇用来交作业的文章 摘要 随着数据时代的到来,数据治理、数据素养和数据质量管理成为组织数据管理中的三大核心概念。本文基于相关研究与实践,对这三个领域进行全面综述,探讨它…...
【Linux】用户和用户组管理
管理用户 1.添加用户账号——useradd命令 【实例2-1-1】 按系统默认配置添加指定用户账号st和stu。 # 添加用户账号st [rootlocalhost ~]# useradd st # 添加用户账号stu [rootlocalhost ~]# useradd stu【实例2-1-2】添加用户账号stu01,UID为1004&am…...
游戏引擎学习第16天
视频参考:https://www.bilibili.com/video/BV1mEUCY8EiC/ 这些字幕讨论了编译器警告的概念以及如何在编译过程中启用和处理警告。以下是字幕的内容摘要: 警告的定义:警告是编译器用来告诉你某些地方可能存在问题,尽管编译器不强制要求你修复…...
如何通过对敏捷实践的调整,帮助远程团队提升研发效能?
首先明确一点,最敏捷的做法就是不要远程团队或分布式团队,远程一定比不上面对面同一地点的模式,毕竟环境不同,就不要期望远程团队和本地团队具备相同的效能,甚至期望更高。 那么,无论何种原因,…...
Ubuntu Linux使用前准备动作 配置SSH
在 Ubuntu 系统中配置 SSH 服务可以通过以下步骤进行: 1、安装ssh服务 1)打开终端(可以使用快捷键 Ctrl Alt T)。 2)运行以下命令安装 OpenSSH 服务器: sudo apt-get update:这一步是更新…...
疫情下的图书馆管理系统:Spring Boot技术
摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了疫情下图书馆管理系统的开发全过程。通过分析疫情下图书馆管理系统管理的不足,创建了一个计算机管理疫情下图书馆管理系统的方案。文章介绍了疫情下图…...
vue3完整安装并创建项目
1、下载:https://npmmirror.com/mirrors/node/v18.19.0/node-v18.19.0-x64.msi 2、验证Nodejs是否安装成功(管理员身份运行cmd) node -v #查看nodejs的版本 v18.19.0npm -v #查看npm的版本 10.2.3 3、在D:\Program Files\nodejs路径下创建两…...
【Linux】Linux入门实操——进程管理(重点)
1. 概述 在 LINUX 中,每个执行的程序都称为一个进程。每一个进程都分配一个ID号(pid,进程号)。>windows > linux每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作࿰…...
Linux-Apache
文章目录 Apache基础配置 🏡作者主页:点击! 🤖Linux专栏:点击! ⏰️创作时间:2024年11月19日12点20分 Apache Web服务器用来实现HTTP和相关TCP连接的处理,同时负责所提供资源的管理…...
高危,Laravel参数注入漏洞安全风险通告
今日,亚信安全CERT监控到安全社区研究人员发布安全通告,披露了Laravel 参数注入漏洞(CVE-2024-52301)。在受影响的版本中,Application.php 文件的 detectEnvironment 函数直接使用了 $_SERVER[argv],但没有检查运行环境是否为 CLI…...
【Qt】使用QString的toLocal8Bit()导致的问题
问题 使用Qt发送一个Http post请求的时候,服务一直返回错误和失败信息。同样的url以及post参数,复制黏贴到postman里就可以发送成功。就感觉很神奇。 原因 最后排查出原因是因为参数中含有汉字而导致的编码问题。 在拼接post参数时,使用了…...
Android上运行Opencv(TODO)
在高通安卓平台上,确实可以通过 NDK 使用 OpenCV 并访问摄像头。NDK 提供了更高性能的计算能力,特别是在图像处理和计算密集型任务中,与 OpenCV 结合可以充分利用高通平台的硬件资源(如 NEON SIMD 指令集和 GPU 加速)。…...
动态IP黑白名单过滤的设计与实现(上篇设计思想)
文章目录 需求分析方案设计1、设计过程2、最终方案3、扩展知识 - 布隆过滤器 需求分析 一些恶意用户(可能是黑客、爬虫、DDoS 攻击者)可能频繁请求服务器资源,导致资源占用过高。因此我们需要一定的手段实时阻止可疑或恶意的用户,…...
LeetCode 力扣 热题 100道(五)最长回文子串(C++)
最长回文子串 给你一个字符串 s,找到 s 中最长的 回文子串。 回文性 如果字符串向前和向后读都相同,则它满足 回文性 子字符串子字符串 是字符串中连续的 非空 字符序列。 动态规划法 class Solution { public:string longestPalindrome(string s) {i…...
Docker--Docker Registry(镜像仓库)
什么是Docker Registry? 镜像仓库(Docker Registry)是Docker生态系统中用于存储、管理和分发Docker镜像的关键组件。 镜像仓库主要负责存储Docker镜像,这些镜像包含了应用程序及其相关的依赖项和配置,是构建和运行Doc…...
maven手动上传jar到私服仓库:mvn deploy:deploy-file命令
一、场景 现需要将公司内部的jar包上传到私服仓库,供其他同事使用,此时就需要用到mvn deploy:deploy-file命令。 二、 mvn deploy:deploy-file命令 举个栗子: mvn deploy:deploy-file -DgroupIdorg.pttsql -DartifactIdpttsql -Dversi…...
【机器学习】机器学习中用到的高等数学知识-1.线性代数 (Linear Algebra)
向量(Vector)和矩阵(Matrix):用于表示数据集(Dataset)和特征(Feature)。矩阵运算:加法、乘法和逆矩阵(Inverse Matrix)等,用于计算模型参数。特征值(Eigenvalues)和特征向量(Eigenvectors)&…...
无插件H5播放器EasyPlayer.js网页web无插件播放器选择全屏时,视频区域并没有全屏问题的解决方案
EasyPlayer.js H5播放器,是一款能够同时支持HTTP、HTTP-FLV、HLS(m3u8)、WS、WEBRTC、FMP4视频直播与视频点播等多种协议,支持H.264、H.265、AAC、G711A、MP3等多种音视频编码格式,支持MSE、WASM、WebCodec等多种解码方…...
Idea中创建和联系MySQL等数据库
备注:电脑中要已下好自己需要的MySQL数据库软件 MySQL社区版下载链接: https://dev.mysql.com/downloads/installer/ 优点: 1.相比与在命令行中管理数据库,idea提供了图形化管理,简单明了; 2.便于与后端…...
【极限压测】从99.9%全红到5%安全线!2026最新横评5款硬核降AI工具
说真的,作为在知乎摸爬滚打好几年的博主,我太理解大家临近交稿时的那种绝望了。眼看着论文初稿要交,结果降ai检测一出来,竟然是红彤彤的99%?!那一刻,我感觉脑袋真的“嗡”的一声。好不容易熬夜码…...
当NB-IoT遇上同步轨道卫星:GEO场景下的定时关系增强全指南(基于3GPP Release 17最新规范)
GEO卫星场景下NB-IoT定时关系增强技术解析 1. GEO卫星通信与NB-IoT的技术融合挑战 地球静止轨道(GEO)卫星通信与窄带物联网(NB-IoT)技术的结合,为全球物联网覆盖提供了革命性解决方案。GEO卫星位于地球赤道上空35,786公…...
第4章 编码规范-4.1 命名规范
在Python中,变量、常量、模块、包、函数、类、对象、属性、方法和异常类都具有一定的命名规范。但是,这些命名规范都是通用性规范,而不是强制性规范,所以具体的命名规范还需要以开发项目的要求为主。(1)变量…...
LongCat-Image-Edit图片编辑神器:5分钟快速部署,一句话精准改图
LongCat-Image-Edit图片编辑神器:5分钟快速部署,一句话精准改图 1. 产品核心能力介绍 LongCat-Image-Edit是美团LongCat团队推出的开源图像编辑模型,它让复杂的图片编辑变得像说话一样简单。这个模型有三大杀手锏: 一句话精准编…...
Ubuntu 22.04 开机卡在/dev/sda3: clean的磁盘空间分析与扩容实战
1. 问题现象与初步诊断 当你兴冲冲地按下Ubuntu 22.04的开机键,却看到屏幕卡在/dev/sda3: clean这个神秘提示时,那种感觉就像开车时突然遇到路障——明明昨天还能正常使用,今天怎么就罢工了?这种情况我遇到过不止一次,…...
COMSOL 探索岩石力学多场景:损伤、压裂、试验与模拟
COMSOL岩石损伤、水力压裂、三轴试验 岩石在膨胀剂的膨胀作用下的损伤; 相场法与水力压裂(6个模型); 不固结不排水三轴试验; 二维钻孔封孔效果模拟。在岩石力学领域,COMSOL 如同一个强大的实验室,让我们能够对复杂的岩…...
【SpringBoot 】dynamic 动态数据源配置连接池(转)
前言 在复杂的业务场景中,我们经常需要使用多数据源来满足不同的数据访问需求。Dynamic Datasource 为我们提供了一种灵活切换不同数据源的解决方案。但是多数据源配置连接池 以及说明文档都是收费的。 本篇博文将详细介绍如何配置和优化 Dynamic Datasource 的连接…...
Cesium使用
Cesium官网:https://cesiumjs.org 官方API文档:https://cesium.com/learn/ion-sdk/ref-doc 中文API文档:https://cesium.xin/cesium/cn/Documentation1.95 https://cesium.xin Cesium中文社区:http://cesiumcn.org …...
如何为Rainmeter贡献多语言翻译:完整指南
如何为Rainmeter贡献多语言翻译:完整指南 【免费下载链接】rainmeter Desktop customization tool for Windows 项目地址: https://gitcode.com/gh_mirrors/ra/rainmeter Rainmeter作为一款强大的Windows桌面自定义工具,支持全球用户通过多语言界…...
OpenClaw任务编排:用Qwen3.5-4B-Claude实现爬虫+分析闭环
OpenClaw任务编排:用Qwen3.5-4B-Claude实现爬虫分析闭环 1. 为什么需要自动化任务编排 去年我接手了一个市场调研项目,需要每周从20多个网站抓取产品价格数据,清洗后生成趋势图表。最初用Python脚本手动Excel处理,每次要花3小时…...
