40 lines
802 B
Go
40 lines
802 B
Go
package middleware
|
|
|
|
import (
|
|
response "base-go-v2/internal/reponse"
|
|
"base-go-v2/internal/router"
|
|
"base-go-v2/internal/utils/jwtx"
|
|
)
|
|
|
|
func AuthMiddleware() router.HandlerFunc {
|
|
return func(c *router.Context) error {
|
|
token := c.Header("token")
|
|
if token == "" {
|
|
c.Abort()
|
|
return response.Fail(c).
|
|
Code(response.HttpCode.Unauthorized).
|
|
Message("未提供 Token").
|
|
Send()
|
|
}
|
|
|
|
tokenVerify := jwtx.VerifyToken(token)
|
|
|
|
// Access Token 有效
|
|
if tokenVerify.IsValid {
|
|
c.SetUserID(tokenVerify.Claims.UserID)
|
|
return nil
|
|
}
|
|
|
|
// Access Token 失效 → 返回刷新提示
|
|
if !tokenVerify.IsValid {
|
|
c.Abort()
|
|
return response.Fail(c).
|
|
Code(response.HttpCode.RefreshToken).
|
|
Message("Access Token 已过期,请刷新").
|
|
Send()
|
|
}
|
|
|
|
return c.Next()
|
|
}
|
|
}
|