gpt4 book ai didi

go - 如何使用 golang gin 为 restful API 创建身份验证模型?

转载 作者:IT王子 更新时间:2023-10-29 01:49:40 24 4
gpt4 key购买 nike

我希望为我的 restful API 创建一个身份验证模型。希望使用 API token ,我在 Web 服务中使用 MVC,我创建了一个像这样的 auth.go Controller 。

package controllers

import (

"github.com/gin-gonic/gin"
"os"
//"github.com/jinzhu/gorm"

)

type AdsControllerAuth struct {

}


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

if token == "" {
respondWithError(401, "API token required", c)
return
}

if token != os.Getenv("API_TOKEN") {
respondWithError(401, "Invalid API token", c)
return
}

c.Next()
}
}

func respondWithError(code int,message string,c *gin.Context) {
resp := map[string]string{"error": message}

c.JSON(code, resp)
//c.Abort(code)
}

它现在不工作,有人可以帮忙做这个吗?或者有什么例子可以引用吗?

最佳答案

我制作了自己的中间件来检查 token ,如下所示:

package main

import (
"github.com/gin-gonic/gin"
)

//JWTAuthMiddleware middleware
func JWTAuthMiddleware() gin.HandlerFunc {
return func(c *gin.Context) {
validateToken(c)
c.Next()
}
}

func validateToken(c *gin.Context) {
token := c.Request.Header.Get("X-Auth-Token")

if token == "" {
c.AbortWithStatus(401)
} else if checkToken(token) {
c.Next()
} else {
c.AbortWithStatus(401)
}
}

在示例中,我使用的是 Header 而不是 FormValue。

试用 Chrome DHC 扩展进行测试:https://chrome.google.com/webstore/detail/dhc-rest-client/aejoelaoggembcahagimdiliamlcdmfm

关于go - 如何使用 golang gin 为 restful API 创建身份验证模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36122999/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com