runningwater 8 місяців тому
батько
коміт
4a2f0fbdfc
3 змінених файлів з 34 додано та 0 видалено
  1. 27 0
      app/http/middlewares/guest_jwt.go
  2. 4 0
      gohub.http
  3. 3 0
      main.go

+ 27 - 0
app/http/middlewares/guest_jwt.go

@@ -0,0 +1,27 @@
+package middlewares
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/runningwater/gohub/pkg/jwt"
+	"github.com/runningwater/gohub/pkg/response"
+)
+
+// GuestJWT 强制使用游客身份认证中间件
+func GuestJWT() gin.HandlerFunc {
+	return func(c *gin.Context) {
+		// 检查请求头中是否包含 Authorization 字段
+		authHeader := c.GetHeader("Authorization")
+		if len(authHeader) > 0 {
+			// 如果存在 Authorization 字段,验证 JWT
+			_, err := jwt.NewJWT().ParseToken(c)
+			if err == nil {
+				// 如果 JWT 验证通过,返回 403 错误
+				response.Unauthorized(c, "请使用游客身份认证")
+				c.Abort()
+				return
+			}
+		}
+		// 调用下一个中间件或处理函数
+		c.Next()
+	}
+}

+ 4 - 0
gohub.http

@@ -82,4 +82,8 @@ Content-Type: application/json
 
 ### /test_auth 测试认证
 GET {{base_url}}/test_auth HTTP/1.1
+Authorization: Bearer {{access_token}}
+
+### /test_gust 测试认证
+GET {{base_url}}/test_gust HTTP/1.1
 Authorization: Bearer {{access_token}}

+ 3 - 0
main.go

@@ -46,6 +46,9 @@ func main() {
 	// 	userModle := auth.CurrentUser(c)
 	// 	response.Data(c, userModle)
 	// })
+	// r.GET("/test_gust", middlewares.GuestJWT(), func(c *gin.Context) {
+	// 	response.Data(c, "hello")
+	// })
 
 	// 测试发送短信
 	// verifycode.NewVerifyCode().SendSMS("15968875425")