iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >如何使用中间件进行授权 - gin gonic go
  • 619
分享到

如何使用中间件进行授权 - gin gonic go

2024-02-05 21:02:26 619人浏览 泡泡鱼
摘要

问题内容 我正在学习使用带有 gin 框架的中间件,但我遇到了一个问题 我希望我的 test 函数 仅在满足我的 func tokenauthmiddleware 的要求时才显示在

问题内容

我正在学习使用带有 gin 框架中间件,但我遇到了一个问题

我希望我的 test 函数 仅在满足我的 func tokenauthmiddleware 的要求时才显示在 postman 中

但是无论我的正文是否填写,我的测试函数都会被调用(有或没有身份验证)如何解决这个问题? 我希望我的测试函数仅在经过中间层后才显示

我尝试过这样的事情:

package main

import (
    "log"
    "net/Http"
    "os"

    "GitHub.com/gin-Gonic/gin"
    "github.com/joho/godotenv"
)

func TokenAuthMiddleware() gin.HandlerFunc {
    err := godotenv.Load(".env")
    if err != nil {
        log.Fatal("Erro ao ler variaveis de ambiente")
    }
    requiredToken := os.Getenv("api_TOKEN")

    if requiredToken == "" {
        log.Fatal("Por favor, defina a variavel API_TOKEN")
    }

    return func(c *gin.Context) {
        token := c.Request.FORMValue("api_token")

        if token == "" {
            c.JSON(http.StatusBadRequest, gin.H{"message": "Token deve ser preenchido"})

        } else if token != requiredToken {
            c.jsON(http.StatusBadRequest, gin.H{"message": "Token invalido"})

        }
        c.Next()
    }

}

func Teste(c *gin.Context) {
    c.JSON(http.StatusOK, gin.H{
        "sucess": "so beautiful",
    })
}

func main() {

    api := gin.New()

    v1 := api.Group("v1")
    v1.Use(TokenAuthMiddleware())
    v1.GET("/", Teste)

    api.Run()
}

提前非常感谢


正确答案


总是调用 c.next(),它会继续处理中间件链或执行处理程序。当令牌不正确时,您需要避免调用它。

func TokenAuthMiddleware() gin.HandlerFunc {
    err := godotenv.Load(".env")
    if err != nil {
        log.Fatal("Erro ao ler variaveis de ambiente")
    }
    requiredToken := os.Getenv("API_TOKEN")

    if requiredToken == "" {
        log.Fatal("Por favor, defina a variavel API_TOKEN")
    }

    return func(c *gin.Context) {
        token := c.Request.FormValue("api_token")

        if token == "" {
            c.JSON(http.StatusBadRequest, gin.H{"message": "Token deve ser preenchido"})
            return
        }
        if token != requiredToken {
            c.JSON(http.StatusBadRequest, gin.H{"message": "Token invalido"})
            return
        }

        c.Next()
    }

}

以上就是如何使用中间件进行授权 - gin gonic go的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: 如何使用中间件进行授权 - gin gonic go

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

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

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

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

下载Word文档
猜你喜欢
  • 如何使用中间件进行授权 - gin gonic go
    问题内容 我正在学习使用带有 gin 框架的中间件,但我遇到了一个问题 我希望我的 test 函数 仅在满足我的 func tokenauthmiddleware 的要求时才显示在...
    99+
    2024-02-05
  • 如何使用 gin gonic 在 Go 中上传多部分文件和 json?
    来到编程网的大家,相信都是编程学习爱好者,希望在这里学习Golang相关编程知识。下面本篇文章就来带大家聊聊《如何使用 gin gonic 在 Go 中上传多部分文件和 json?》,介绍一下,希望...
    99+
    2024-04-05
  • go - 如何在 Gin 中使用 JWT 提供基于路由的授权的静态文件?
    在使用Go编写Web应用程序时,Gin是一个非常受欢迎的框架,它提供了快速、灵活和易于使用的方式来构建API和Web应用。在许多应用程序中,我们需要提供静态文件,如CSS、JavaSc...
    99+
    2024-02-11
  • 如何使用 Gin-Gonic 在 Go 中读取蛇形 JSON 请求正文
    各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题是《如何使用 Gin-Gonic 在 Go 中读取蛇形 JSON 请求正文》,很明显是关于Golang的文章哈哈哈,其中内容主要会涉...
    99+
    2024-04-04
  • 如何使用WinLicense对软件进行加密保护和授权
    使用WinLicense对软件进行加密保护和授权的步骤如下:1. 下载并安装WinLicense软件。可以从官方网站或其他可信来源下...
    99+
    2023-09-22
    WinLicense
  • 小程序中如何进行用户授权登录
    在小程序中进行用户授权登录通常涉及以下步骤: 在小程序中引导用户点击登录按钮或进行其他操作触发登录流程。 调用小程序的API获取用...
    99+
    2024-04-17
    小程序
  • 如何使用 go gin 从 Auth0 jwt 令牌检索权限
    问题内容 我正在学习 go,想使用 auth0 设置一个简单的应用程序。 使用他们的教程,我能够为我的 api 端点设置基本身份验证。 现在我想使用 jwt 令牌添加权限处理。 因此,...
    99+
    2024-02-12
  • 如何在SQLServer中进行用户身份验证和授权管理
    在SQL Server中进行用户身份验证和授权管理是非常重要的,以确保数据库的安全性和数据的保护。以下是一些常见的方法来实现用户身份...
    99+
    2024-04-09
    SQLServer
  • 数据库中如何新建表空间、用户及授权
    这篇文章主要介绍数据库中如何新建表空间、用户及授权,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 1、定位表空间数据文件保存路径select ...
    99+
    2024-04-02
  • 如何在Go中使用NumPy进行编程?
    NumPy是一个广泛使用的Python库,用于科学计算和数据分析。但是,如果你想使用Go语言编写科学计算程序,该怎么办呢?这就需要使用Go的NumPy库。在本文中,我们将探讨如何在Go中使用NumPy进行编程,以及如何使用这个库来进行科学...
    99+
    2023-09-01
    编程算法 numpy path
  • 如何在IDE中使用GO进行打包?
    随着Go语言的不断发展,越来越多的开发者开始使用它来构建高性能的应用程序。而在开发过程中,我们通常需要将Go代码打包成可执行文件或者库文件,以便于部署和使用。那么,如何在IDE中使用Go进行打包呢?本篇文章将为您详细介绍。 一、Go语言包...
    99+
    2023-10-30
    git 打包 ide
  • 如何在Go中使用Bash进行存储?
    在现代软件开发中,存储和处理数据是非常重要的一部分。然而,不同的编程语言和平台提供了不同的解决方案。在这篇文章中,我们将介绍如何在Go中使用Bash进行存储。 Bash是Linux和Unix操作系统中最常用的shell之一。它提供了强大的...
    99+
    2023-11-01
    bash 存储 自然语言处理
  • 如何使用PHP进行权限控制?
    在现代的网站和应用中,权限控制是一项必备功能。无论是通过身份验证还是其他方式,让用户有不同的权限和角色是确保程序安全的关键。PHP是一种流行的服务器端语言,提供了许多不同的方法来实现权限控制。在本文中,我们将探讨如何使用PHP进行权限控制,...
    99+
    2023-05-24
    PHP 权限控制 用户认证
  • Go语言如何使用golang-jwt/jwt/v4进行JWT鉴权详解
    目录前言1.什么是JWT2.JWT的数据结构2.1 Header2.2 Payload2.3 Signature2.4 Base64URL3使用JWT安装生成Token总结前言 最近...
    99+
    2024-04-02
  • Go中如何使用MongoDB进行数据查询
    Go是一种开源编程语言,被许多开发人员广泛使用。在与MongoDB数据库进行交互时,Go在编写高效和简洁查询时的表现也非常出色。本文将介绍如何在Go中使用MongoDB进行查询。首先,我们需要安装“mgo” Go-MongoDB驱动程序,可...
    99+
    2023-05-14
  • 如何使用PHP进行时间区间查询
    在 Web 应用程序的开发中,对时间的处理是非常常见的工作之一。一个常见的需求是查询某个时间区间内的数据,比如查询某个时间段内的订单,或者统计某个时间段内的访问量等。本文将介绍如何使用 PHP 语言进行时间区间查询。首先,我们需要了解一下时...
    99+
    2023-05-14
    php
  • Android进程间如何使用Intent进行通信
    这篇文章主要介绍“Android进程间如何使用Intent进行通信”,在日常操作中,相信很多人在Android进程间如何使用Intent进行通信问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android进程...
    99+
    2023-07-05
  • 如何在 Go 中使用 NumPy 进行数组索引?
    在 Go 中使用 NumPy 进行数组索引是一个相对较新的技术,但它已经被证明是非常有用的,特别是在处理大型数组数据时。在本文中,我们将探讨如何在 Go 中使用 NumPy 进行数组索引,以及为什么它对于数据科学和机器学习非常重要。 首先,...
    99+
    2023-06-27
    文件 numpy 索引
  • 如何在 Bash 中使用 Go 和 Laravel 进行存储?
    Bash 是一个流行的命令行解释器和脚本语言,被广泛应用于 Linux 和 Unix 操作系统中。而 Go 和 Laravel 则是两个非常流行的编程语言和框架,它们分别用于开发高性能的服务器端应用程序和 Web 应用程序。 在本文中,我...
    99+
    2023-09-19
    laravel 存储 bash
  • 如何在Go中使用Casbin进行访问控制
    目录Casbin是什么Casbin的工作原理Casbin的核心概念ModelPolicy实践创建项目代码开发验证Casbin是什么 Casbin是一个强大的、高效的开源访问控制框架,...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作