问题内容
我正在学习使用带有 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的详细内容,更多请关注编程网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容- 如何进行 Java WebAPI 的版本控制?(Java WebAPI如何进行版本控制)
- Java 中如何利用文件来存储数据?(java如何用文件储存数据)
- Java 前端框架究竟是如何进行分类的?(java前端框架如何分类的)
- 如何轻松自定义 java 对象的 clone 行为?(如何自定义java对象的clone行为)
- Java 高并发场景的解决办法有哪些?(java高并发场景如何解决)
- Java 人脸识别具体有哪些应用场景呢?(Java人脸识别有哪些应用场景)
- JAVA 中如何运用 QT 来开发 GUI?(JAVA中怎么使用QT开发GUI)
- 如何在 MySQL 中优化插入大量数据的操作?(mysql insert大量数据时如何优化)
- 如何高效升级Redis客户端
- Java 中如何获取内存地址中的值?(java如何获取内存地址中的值)
猜你喜欢
AI推送时光机如何使用中间件进行授权 - gin gonic go
后端开发2024-02-05
如何使用 gin gonic 在 Go 中上传多部分文件和 json?
后端开发2024-04-05
如何使用 Gin-Gonic 在 Go 中读取蛇形 JSON 请求正文
后端开发2024-04-04
go - 如何在 Gin 中使用 JWT 提供基于路由的授权的静态文件?
后端开发2024-02-11
如何使用WinLicense对软件进行加密保护和授权
后端开发2023-09-22
小程序中如何进行用户授权登录
后端开发2024-04-17
如何在SQLServer中进行用户身份验证和授权管理
后端开发2024-04-09
如何在IDE中使用GO进行打包?
后端开发2023-10-30
如何在Go中使用Bash进行存储?
后端开发2023-11-01
如何在Go中使用NumPy进行编程?
后端开发2023-09-01
Go语言如何使用golang-jwt/jwt/v4进行JWT鉴权详解
后端开发2024-04-02
Go中如何使用MongoDB进行数据查询
后端开发2023-05-14
如何在Go中使用Git进行版本控制?
后端开发2023-09-14
如何在 Go 中使用 NumPy 进行数组索引?
后端开发2023-06-27
如何在 Bash 中使用 Go 和 Laravel 进行存储?
后端开发2023-09-19
如何在Go中使用Casbin进行访问控制
后端开发2024-04-02
Go 中如何使用 NumPy 框架进行数据存储?
后端开发2023-10-18
如何在Unix中使用Go语言进行Django面试?
后端开发2023-10-31
咦!没有更多了?去看看其它编程学习网 内容吧