go语言实现简单登陆返回token样例

devtools/2024/9/23 10:18:41/

目录

1、代码实现样例:

2、postman调用,获取登陆后的token:


1、代码实现样例:

package mainimport ("net/http""time""github.com/dgrijalva/jwt-go""github.com/gin-gonic/gin"
)var (// 密钥,用于签署 JWT 令牌signingKey = []byte("secret")
)// 用户信息
type User struct {Username string `json:"username"`Password string `json:"-"`
}// 模拟用户数据
var users = map[string]User{"user1": {"user1", "password1"},"user2": {"user2", "password2"},
}// 登录处理程序
func LoginHandler(c *gin.Context) {var credentials struct {Username string `json:"username"`Password string `json:"password"`}if err := c.BindJSON(&credentials); err != nil {c.JSON(http.StatusBadRequest, gin.H{"error": "Invalid request"})return}// 检查用户名和密码user, ok := users[credentials.Username]if !ok || user.Password != credentials.Password {c.JSON(http.StatusUnauthorized, gin.H{"error": "Invalid username or password"})return}// 创建 JWT 令牌token := jwt.New(jwt.SigningMethodHS256)claims := token.Claims.(jwt.MapClaims)claims["username"] = user.Usernameclaims["exp"] = time.Now().Add(time.Hour * 24).Unix() // 令牌过期时间为24小时// 签名令牌tokenString, err := token.SignedString(signingKey)if err != nil {c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to generate token"})return}// 返回令牌给客户端c.JSON(http.StatusOK, gin.H{"token": tokenString})
}func main() {r := gin.Default()// 登录路由r.POST("/login", auth2.LoginHandler)// 启动服务r.Run(":8080")
}

2、postman调用,获取登陆后的token:


http://www.ppmy.cn/devtools/25602.html

相关文章

LLaMA 3:大模型之战的新序幕

作者 | 符尧 OneFlow编译 翻译|杨婷、宛子琳、张雪聃 本文要点概览: 文本数据的扩展可能已经达到了极限,因为易于获取的网络文本资源(如Common Crawl、GitHub、ArXiv等)已基本被充分利用。 尽管如此,通过更…

解决HttpServletRequest中的InputStream/getReader只能被读取一次的问题

一、事由 由于我们业务接口需要做签名校验,但因为是老系统了签名规则被放在了Body里而不是Header里面,但是我们不能在每个Controller层都手动去做签名校验,这样不是优雅的做法,然后我就写了一个AOP,在AOP中实现签名校…

【配置】Docker搭建JSON在线解析网站

云服务器打开端口8787 连接上docker运行 docker run -id --name jsonhero -p 8787:8787 -e SESSION_SECRETabc123 henryclw/jsonhero-webhttp://ip:8787访问 Github:地址

C#中正则表达式(Regular Expression)

在C#中,正则表达式(Regular Expression)是一种强大的模式匹配工具,用于在文本中搜索、匹配和操作符合特定模式的字符串。它基于一种特定的语法,用于描述字符串的规则和模式。 正则表达式由各种字符和元字符组成&#…

串口通信标准RS232 RS485 RS422的区别

很多工程师经常把RS-232、RS-422、RS-485称为通讯协议,其实这是不对的,它们仅仅是关于串口通讯的一个机械和电气接口标准(顶多是网络协议中的物理层),不是通讯协议,那它们又有哪些区别呢: 第一…

C进阶-数据的存储

文章目录 1. 数据类型介绍类型的基本归类 2. 整型在内存中的存储:原码,反码,补码2.1. 原码,反码,补码 2.2. 大小端介绍大端字节序存储小端字节序存储例:设计程序判断是大端还是小端? 2.3. 练习练习1练习2练习3练习4 3. 浮点型在内存中的存储 1. 数据类型介绍 数据类型数据类型…

解析企业绩效通系统架构:构建高效管理与激励平台

在当今竞争激烈的商业环境中,企业需要不断提升管理效率和员工激励力度,以保持竞争优势并实现可持续发展。绩效通系统作为一种集成了绩效管理、激励机制和员工发展规划的管理工具,正逐渐成为现代企业管理的核心组成部分。本文将深入探讨企业绩…

RabbitMQ中的交换机类型

交换机类型 可以看到,在订阅模型中,多了一个exchange角色,而且过程略有变化: Publisher:生产者,不再发送消息到队列中,而是发给交换机 Exchange:交换机,一方面&#xff…