guest_jwt.go 712 B

12345678910111213141516171819202122232425262728
  1. package middlewares
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "github.com/runningwater/gohub/pkg/jwt"
  5. "github.com/runningwater/gohub/pkg/response"
  6. )
  7. // GuestJWT 强制使用游客身份认证中间件
  8. func GuestJWT() gin.HandlerFunc {
  9. return func(c *gin.Context) {
  10. // 检查请求头中是否包含 Authorization 字段
  11. authHeader := c.GetHeader("Authorization")
  12. if len(authHeader) > 0 {
  13. // 如果存在 Authorization 字段,验证 JWT
  14. _, err := jwt.NewJWT().ParseToken(c)
  15. if err == nil {
  16. // 如果 JWT 验证通过,返回 403 错误
  17. response.Unauthorized(c, "请使用游客身份认证")
  18. c.Abort()
  19. return
  20. }
  21. }
  22. // 调用下一个中间件或处理函数
  23. c.Next()
  24. }
  25. }