Files
copilot-app/pkg/jwt/examples_test.go
2025-08-13 19:03:20 +08:00

47 lines
993 B
Go

package jwt_test
import (
"fmt"
"github.com/gin-gonic/gin"
"github.com/golang-jwt/jwt/v5"
"ripper/internal/middleware"
"ripper/internal/response"
jwtpkg "ripper/pkg/jwt"
)
// 业务模型
type UserLoad struct {
ID uint `json:"id"`
jwt.RegisteredClaims
}
// 快速创建接口
func newUserLoad(ID uint, ExpiresAt int64, Issuer string) *UserLoad {
return &UserLoad{
ID: ID,
RegisteredClaims: jwtpkg.CreateStandardClaims(ExpiresAt, Issuer),
}
}
func testHandler(c *gin.Context) {
// 获取jwt数据并处理错误
// 可以在中间件完成这一步,根据业务自行扩展
token, err := jwtpkg.GetJwtProto(c, &UserLoad{})
if err != nil {
response.FailJson(c, response.FailStruct{
Code: 401,
Msg: err.Error(),
}, false)
}
fmt.Println(token)
}
func main() {
r := gin.Default()
//使用中间件时绑定业务jwt模型,并且可以设置验证的签发人
r.Use(middleware.JWTAuth(&UserLoad{}, "is"))
r.GET("/test", testHandler)
r.Run()
}