首页 > 其他分享 >【go】【jwt】

【go】【jwt】

时间:2024-05-29 14:12:36浏览次数:17  
标签:jwt golang token time go Claims

@

目录


写在前面

  • 相关博文
  • 个人博客首页
  • 免责声明:仅供学习交流使用!开源框架可能存在的风险和相关后果将完全由用户自行承担,本人不承担任何法律责任。

install jwt

go get github.com/golang-jwt/jwt/v5

golang jwt


import (
	"errors"
	"github.com/golang-jwt/jwt/v5"
	"time"
)
var (
	secretKey = "secret"
	expireAt = time.Duration * 10
	)

// Claims 创建自定义声明结构体
type Claims struct {
	name string // 自定义
	jwt.RegisteredClaims
}

func Token(auth model.Auth) (string, error) {
	var expireAt time.Duration
	// 定义一个密钥(在生产环境中,请使用更安全的密钥管理方案)
	// 创建声明
	claims := Claims{
		Auth: auth,
		RegisteredClaims: jwt.RegisteredClaims{
			ExpiresAt: jwt.NewNumericDate(time.Now().Add(time.Hour * expireAt)), // expireAt 小时后过期
			IssuedAt:  jwt.NewNumericDate(time.Now()),
			NotBefore: jwt.NewNumericDate(time.Now()),
		},
	}

	// 创建token
	token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)

	// 签名token
	return token.SignedString([]byte(SecretKey))
}

func Parse(tokenString string) (*Claims, error) {

	// 解析和校验token
	token, err := jwt.ParseWithClaims(tokenString, &Claims{}, func(token *jwt.Token) (interface{}, error) {
		return []byte(SecretKey), nil
	})
	if err != nil {
		return nil, err
	}
	if claims, ok := token.Claims.(*Claims); ok && token.Valid {
		return claims, nil
	}
	return nil, errors.New("jwt parser error")
}


参考资料

基础/标准库/第三方库


golang 导航


编程规范


算法|面试


项目


标签:jwt,golang,token,time,go,Claims
From: https://www.cnblogs.com/nones/p/18220149

相关文章

  • go的标准库之flag包和log包
    1、flag包用处:在Go语言中,flag包是用来解析命令行参数的例如:查看docker的版本-v就是命令行参数2种常用的用法:a、flag.Type(flag名,默认值,帮助信息) name:=flag.String("username","admin","这是一个用户名参数的描述") pwd:=flag.Int("password",123456,"这......
  • Golang中的三种指针
    三种类型的指针:类型用途备注普通类型指针传递对象的地址,不能做指针运算uintptr作为一段内容的首地址,可以做指针运算,GC不把uintptr当指针,uintptr无法持有对象。uintptr类型的目标会被回收。unsafe.Pointer不能做指针运算,可以用做在不同数据类型指针间转......
  • python社区宠物登记养宠交流系统vue+flask_django包调试pycharm
    有何创新之处(1)系统资源闭环整合,实现了综合功能高度集成。(2)采用DJANGO框架,开发软件更加方便、快捷、高效用户具体功能如下:1、社区管理员:注册、登录、个人信息管理、发帖管理、评论管理、宠物规范管理、社区用户管理、宠物类别管理、宠物信息管理(查询宠物信息,修改宠物信息,删......
  • 深入探索 MongoDB:高级索引解析与优化策略
    MongoDB是一种非常流行的NoSQL数据库,它支持丰富的索引类型和功能,以提高数据查询的效率和性能。本文将详细介绍MongoDB的高级索引,包括基本语法、常用命令、示例、应用场景、注意事项和总结。基本语法在MongoDB中,可以使用createIndex()方法创建索引,语法如下:db.col......
  • Google难架马甲多
    今年谷歌上架的难度可谓是地狱级别。可是国内马甲这么多,总要摸索出一些套路来。这里总结几条开源aab混淆策略。1、as自带混淆是必要的,否则就是源码提包,相当于到谷歌门口举个牌子说我是马甲包。不仅要驳回,还要被封号。所以这个得加上。2、做了第一步,也还只是个小孩。只是......
  • LeetCode 1329. Sort the Matrix Diagonally
    原题链接在这里:https://leetcode.com/problems/sort-the-matrix-diagonally/description/题目:A matrixdiagonal isadiagonallineofcellsstartingfromsomecellineitherthetopmostroworleftmostcolumnandgoinginthebottom-rightdirectionuntilreachin......
  • Red is good
    事先说明,看的题解题目描述桌面上有R张红牌和B张黑牌,随机打乱顺序后放在桌面上,开始一张一张地翻牌,翻到红牌得到1美元,黑牌则付出1美元。可以随时停止翻牌,在最优策略下平均能得到多少钱。输入格式一行输入两个数R,B,其值在0到5000之间输出格式在最优策略下平均能得到多少钱。......
  • go语言之cron定时任务
    ####版本一定选对goget"github.com/robfig/cron/v3"代码如下:packagemainimport("fmt""github.com/robfig/cron/v3""os""runtime""time")//GetOS返回当前操作系统的字符串表示funcGetOS()......
  • Lesson 3 An unknown goddess 无名女神
    Howdidthearchaeologistsknowthatthestatuewasagoddess?1.原文Sometimeago,aninterestingdiscoverywasmadebyarchaeologistsontheAegeanislandofKea.AnAmericanteamexploredatemplewhichstandsinanancientcityonthepromontoryo......
  • MongoDB CRUD操作:投影Project详解
    MongoDBCRUD操作:投影Project详解文章目录MongoDBCRUD操作:投影Project详解返回文档的全部字段返回指定的字段和_id字段不输出_id字段指定排除的字段返回内嵌文档中的指定字段禁止内嵌文档中的特定字段数组中内嵌文档的投影聚合表达式的投影字段默认情况下,MongoDB查......