Files
go-desk-service/middleware/token_auth.go
2025-09-11 14:37:14 +08:00

46 lines
1.3 KiB
Go

package middleware
import (
"context"
grpcClient "go-desk-service/grpc-client"
"go-desk-service/libs"
userpb "go-desk-service/proto/gen"
"net/http"
"time"
"github.com/gin-gonic/gin"
)
func TokenAuth() gin.HandlerFunc {
return func(c *gin.Context) {
// 调用当前grpc的token校验接口
client := grpcClient.GetUserClient()
ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
defer cancel()
authHeader := c.GetHeader("Authorization")
if authHeader == "" {
tokenExpired := libs.ErrorCode["TokenExpired"]
c.JSON(http.StatusUnauthorized, gin.H{"code": tokenExpired.Code, "data": tokenExpired.Data, "msg": tokenExpired.Msg})
c.Abort()
return
}
TokenStatus, err := client.ValidateToken(ctx, &userpb.ValidateTokenRequest{
AccessToken: authHeader,
})
if err != nil {
tokenExpired := libs.ErrorCode["TokenExpired"]
c.JSON(http.StatusUnauthorized, gin.H{"code": tokenExpired.Code, "data": tokenExpired.Data, "msg": tokenExpired.Msg})
c.Abort()
return
}
if !TokenStatus.IsValid {
tokenExpired := libs.ErrorCode["TokenExpired"]
c.JSON(http.StatusUnauthorized, gin.H{"code": tokenExpired.Code, "data": tokenExpired.Data, "msg": tokenExpired.Msg})
c.Abort()
return
}
c.Set("userID", TokenStatus.UserId)
c.Next()
}
}