我的编程空间,编程开发者的网络收藏夹
学习永远不晚

go gin+token验证是怎么实现登陆验证

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

go gin+token验证是怎么实现登陆验证

本篇文章为大家展示了go gin+token验证是怎么实现登陆验证,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

1.准备

go get github.com/dgrijalva/jwt-gogo get github.com/gin-gonic/gin

 2.代码

package main import ("errors""fmt""github.com/dgrijalva/jwt-go""github.com/gin-gonic/gin""net/http""time") func main() {r := gin.Default()r.GET("/login/:username/:password", login)r.GET("/verify/:token", verify)r.GET("/refresh/:token", refresh)r.GET("/sayHello/:token", sayHello)r.Run(":9090") //http://localhost:9090/login/dong/123456//http://localhost:9090/verify/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NjA1MTIyMTAsImlhdCI6MTU2MDUwODYxMCwidXNlcl9pZCI6MSwicGFzc3dvcmQiOiIxMjM0NTYiLCJ1c2VybmFtZSI6ImRvbmciLCJmdWxsX25hbWUiOiJkb25nIiwicGVybWlzc2lvbnMiOltdfQ.Esh2Zge0vO1BAW1GeR5wurWP3H1jUIaMf3tcSaUwkzA//http://localhost:9090/refresh/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NjA1MTIyNDMsImlhdCI6MTU2MDUwODYxMCwidXNlcl9pZCI6MSwicGFzc3dvcmQiOiIxMjM0NTYiLCJ1c2VybmFtZSI6ImRvbmciLCJmdWxsX25hbWUiOiJkb25nIiwicGVybWlzc2lvbnMiOltdfQ.Xkb_J8MWXkwGUcBF9bpp2Ccxp8nFPtRzFzOBeboHmg0} const(ErrorReason_ServerBusy = "服务器繁忙"ErrorReason_ReLogin = "请重新登陆") func sayHello(c *gin.Context) {strToken := c.Param("token")claim,err := verifyAction(strToken)if err != nil {c.String(http.StatusNotFound, err.Error())return}c.String(http.StatusOK, "hello,",claim.Username)} type JWTClaims struct { // token里面添加用户信息,验证token后可能会用到用户信息jwt.StandardClaimsUserID      int      `json:"user_id"`Password    string   `json:"password"`Username    string   `json:"username"`FullName    string   `json:"full_name"`Permissions []string `json:"permissions"`} var (Secret     = "dong_tech" // 加盐ExpireTime = 3600        // token有效期) func login(c *gin.Context) {username := c.Param("username")password := c.Param("password")claims := &JWTClaims{UserID:      1,Username:    username,Password:    password,FullName:    username,Permissions: []string{},}claims.IssuedAt = time.Now().Unix()claims.ExpiresAt = time.Now().Add(time.Second * time.Duration(ExpireTime)).Unix()signedToken,err:=getToken(claims)if err!=nil{c.String(http.StatusNotFound, err.Error())return}c.String(http.StatusOK, signedToken)} func verify(c *gin.Context) {strToken := c.Param("token")claim,err := verifyAction(strToken)if err != nil {c.String(http.StatusNotFound, err.Error())return}c.String(http.StatusOK, "verify,",claim.Username)} func refresh(c *gin.Context) {strToken := c.Param("token")claims,err := verifyAction(strToken)if err != nil {c.String(http.StatusNotFound, err.Error())return}claims.ExpiresAt = time.Now().Unix() + (claims.ExpiresAt - claims.IssuedAt)signedToken,err:=getToken(claims)if err!=nil{c.String(http.StatusNotFound, err.Error())return}c.String(http.StatusOK, signedToken)} func verifyAction(strToken string) (*JWTClaims, error) {token, err := jwt.ParseWithClaims(strToken, &JWTClaims{}, func(token *jwt.Token) (interface{}, error) {return []byte(Secret), nil})if err != nil {return nil, errors.New(ErrorReason_ServerBusy)}claims, ok := token.Claims.(*JWTClaims)if !ok {return nil, errors.New(ErrorReason_ReLogin)}if err := token.Claims.Valid(); err != nil {return nil, errors.New(ErrorReason_ReLogin)}fmt.Println("verify")return claims, nil} func getToken(claims *JWTClaims)(string,error){token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)signedToken, err := token.SignedString([]byte(Secret))if err != nil {return "",errors.New(ErrorReason_ServerBusy)}return signedToken,nil}

运行结果如图:

访问接口

登陆
验证
刷新
http://localhost:9090/login/
http://localhost:9090/verify/
http://localhost:9090/refresh/

go gin+token验证是怎么实现登陆验证

上述内容就是go gin+token验证是怎么实现登陆验证,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

go gin+token验证是怎么实现登陆验证

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

go gin+token验证是怎么实现登陆验证

本篇文章为大家展示了go gin+token验证是怎么实现登陆验证,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.准备go get github.com/dgrijalva/jwt-gogo ge
2023-06-22

Token登陆验证机制怎么实现

这篇文章主要介绍“Token登陆验证机制怎么实现”,在日常操作中,相信很多人在Token登陆验证机制怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Token登陆验证机制怎么实现”的疑惑有所帮助!接下来
2023-06-21

javascript 实现登陆验证

随着互联网的普及,各种网站和应用对用户登陆的需求也越来越多。而随之而来的问题是用户的账号和个人信息的安全性变得更加关键。因此,为确保用户账号的安全,对登陆的验证也就变得非常重要。本文将介绍如何用javascript实现一个简单的登陆验证功能。一、获取用户输入首先,在一个网站或者应用中,登陆验证的第一步是获取用户输入的账号和密码。在前端页面中,我们可以使用HTML的表单元素来实现
2023-05-17

php token验证怎么实现

php token验证的实现方法:1、创建前台form表单;2、设置后台“do.php”的token验证部分,代码如“if($token != $_POST['token']){...}”。
2020-12-25

nodejs怎么实现登陆验证功能

这篇文章主要介绍“nodejs怎么实现登陆验证功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“nodejs怎么实现登陆验证功能”文章能帮助大家解决问题。登陆验证需要提交数据,一种使用form表单提
2023-06-30

Java如何实现Token登录验证

这篇文章主要介绍“Java如何实现Token登录验证”,在日常操作中,相信很多人在Java如何实现Token登录验证问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java如何实现Token登录验证”的疑惑有所
2023-07-05

怎么用vue实现登录注册及token验证

本篇内容主要讲解“怎么用vue实现登录注册及token验证”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用vue实现登录注册及token验证”吧!1. 利用router.beforeEach
2023-07-04

mongodb验证登陆怎么设置

要在MongoDB中设置验证登录,需要按照以下步骤进行操作:1. 启动MongoDB时启用权限验证。通过在启动MongoDB时使用`--auth`选项来启用权限验证。例如:```mongod --auth```2. 创建超级用户。连接到Mo
2023-08-24

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录