47 lines
993 B
Go
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()
|
|
}
|