广告
返回顶部
首页 > 资讯 > 精选 >go gin+token验证是怎么实现登陆验证
  • 706
分享到

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

2023-06-22 00:06:35 706人浏览 泡泡鱼
摘要

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

本篇文章为大家展示了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验证是怎么实现登陆验证,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网精选频道。

--结束END--

本文标题: go gin+token验证是怎么实现登陆验证

本文链接: https://www.lsjlt.com/news/301608.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • go gin+token验证是怎么实现登陆验证
    本篇文章为大家展示了go gin+token验证是怎么实现登陆验证,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.准备go get github.com/dgrija...
    99+
    2023-06-22
  • gogin+token(JWT)验证实现登陆验证
    1.准备 go get github.com/dgrijalva/jwt-go go get github.com/gin-gonic/gin  2.代码 package ...
    99+
    2022-11-12
  • Token登陆验证机制怎么实现
    这篇文章主要介绍“Token登陆验证机制怎么实现”,在日常操作中,相信很多人在Token登陆验证机制怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Token登陆验证机制怎么实现”的疑惑有所帮助!接下来...
    99+
    2023-06-21
  • 基于redis实现token验证用户是否登陆
    基于项目需求, 我们要实现一个基于redis实现token登录验证,该如何实现呢: 后端实现: 1.引入redis相关的依赖 <dependency> <groupId>org...
    99+
    2022-10-18
  • Token登陆验证机制的原理及实现
    session简介 做过Web开发的程序员应该对Session都比较熟悉,Session是一块保存在服务器端的内存空间,一般用于保存用户的会话信息。 用户通过用户名和密码登陆成功之...
    99+
    2022-11-12
  • VUE实现token登录验证
    本文实例为大家分享了VUE实现token登录验证的具体代码,供大家参考,具体内容如下 实现这个登录功能的过程真是一波三折,中途出现了bug,整了两三天才解决了问题,心力交瘁,简直一个...
    99+
    2022-11-12
  • javascript 实现登陆验证
    随着互联网的普及,各种网站和应用对用户登陆的需求也越来越多。而随之而来的问题是用户的账号和个人信息的安全性变得更加关键。因此,为确保用户账号的安全,对登陆的验证也就变得非常重要。本文将介绍如何用javascript实现一个简单的登陆验证功能...
    99+
    2023-05-17
  • php token验证怎么实现
    本文操作环境:Windows7系统、PHP7.1版,DELL G3电脑。php token验证怎么实现?php token使用与验证示例【测试可用】本文实例讲述了php token使用与验证。分享给大家供大家参考,具体如下:一、token功...
    99+
    2020-12-25
    php token
  • nodejs怎么实现登陆验证功能
    这篇文章主要介绍“nodejs怎么实现登陆验证功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“nodejs怎么实现登陆验证功能”文章能帮助大家解决问题。登陆验证需要提交数据,一种使用form表单提...
    99+
    2023-06-30
  • Java如何实现Token登录验证
    这篇文章主要介绍“Java如何实现Token登录验证”,在日常操作中,相信很多人在Java如何实现Token登录验证问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java如何实现Token登录验证”的疑惑有所...
    99+
    2023-07-05
  • nodejs实现登陆验证功能
    本文实例为大家分享了nodejs实现登陆验证的具体代码,供大家参考,具体内容如下 登陆验证需要提交数据,一种使用form表单提交数据,另一种使用原生js提交数据 form表单提交 搭...
    99+
    2022-11-13
  • SpringBoot实现滑块验证码验证登陆校验功能详解
    目录前言一、实现效果二、实现思路三、实现步骤1. 后端 java 代码1.1 新建一个拼图验证码类1.2 新建一个拼图验证码工具类1.3 新建一个 service 类1.4 新建一个...
    99+
    2022-11-13
  • Vue实现用户登录及token验证
    在前后端完全分离的情况下,Vue项目中实现token验证大致思路如下: 1、第一次登录的时候,前端调后端的登陆接口,发送用户名和密码 2、后端收到请求,验证用户名和密码,验证成功,就...
    99+
    2022-11-12
  • SpringBoot集成JWT实现Token登录验证
    目录 1.1 JWT是什么? 1.2 JWT主要使用场景 1.3 JWT请求流程 1.4 JWT结构 二,SpringBoot集成JWT具体实现过程 2.1添加相关依赖 2.2自定义跳出拦截器的注解 2.3自定义全局统一返回值方法,异常类...
    99+
    2023-09-06
    spring boot 后端 java
  • 怎么用vue实现登录注册及token验证
    本篇内容主要讲解“怎么用vue实现登录注册及token验证”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用vue实现登录注册及token验证”吧!1. 利用router.beforeEach...
    99+
    2023-07-04
  • mongodb验证登陆怎么设置
    要在MongoDB中设置验证登录,需要按照以下步骤进行操作:1. 启动MongoDB时启用权限验证。通过在启动MongoDB时使用`...
    99+
    2023-08-24
    mongodb
  • layui实现登陆界面验证码
    本文实例为大家分享了layui实现登陆界面验证码的具体代码,供大家参考,具体内容如下 效果图: html: <div class="layui-form-item">...
    99+
    2022-11-12
  • python装饰器实现登陆验证
          ...
    99+
    2023-01-30
    python
  • Unity&Springboot实现本地登陆验证
    目录Springboot使用IDEA编译器IDEA上实现登录验证返回登录是否成功和登陆用户的id信息Unity端的请求Springboot使用IDEA编译器 IDEA上实现登录验证 ...
    99+
    2022-11-12
  • SpringBoot登录验证token拦截器的实现
    目录注解定义token生成与验证拦截器定义拦截器配置定义拦截器的方法执行类注解使用返回值-全局异常类定义各种测试不传token制造可行的假token伪造token测试拓展:从请求中获...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作