# gin-middleware-paseto **Repository Path**: asphodelus_dev/gin-middleware-paseto ## Basic Information - **Project Name**: gin-middleware-paseto - **Description**: gin的paseto中间件 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-01-21 - **Last Updated**: 2023-01-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # QuickStart #### Add package ```shell go get -u gitee.com/nanakura/gin-middleware-paseto ``` #### Register Middleware ```go package main import ( auth "gitee.com/nanakura/gin-middleware-paseto" "gitee.com/nanakura/gin-middleware-paseto/maker" "github.com/gin-gonic/gin" "log" "net/http" "time" ) type Server struct { router *gin.Engine tokenMaker maker.Maker } func NewServer() *Server { tokenMaker, err := maker.NewPasetoMaker("YELLOW SUBMARINE, BLACK WIZARDRY") if err != nil { panic(err) } return &Server{ router: gin.Default(), tokenMaker: tokenMaker, } } func (s *Server) setupRouter() { authMiddleware := auth.NewDefaultPasetoAuthMiddleware(s.tokenMaker) r := s.router apiGroup := r.Group("/auth") apiGroup.Use(authMiddleware) apiGroup.GET("/", func(ctx *gin.Context) { ctx.JSON(http.StatusOK, gin.H{ "status": "ok", }) }) r.POST("/login", func(ctx *gin.Context) { type loginPayload struct { Username string `json:"username"` Password string `json:"password"` } p := loginPayload{} err := ctx.ShouldBind(&p) if err != nil { log.Println(err) ctx.JSON(http.StatusBadRequest, gin.H{"error": err}) return } username := p.Username token, err := s.tokenMaker.CreateToken(username, 24*time.Hour) if err != nil { ctx.JSON(http.StatusInternalServerError, gin.H{"error": err}) return } ctx.JSON(http.StatusOK, gin.H{"token": token}) }) } func main() { server := NewServer() server.setupRouter() err := server.router.Run(":8080") if err != nil { log.Fatal(err) } } ```