12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- package middleware
- import (
- "strings"
- "github.com/gin-gonic/gin"
- "github.com/sirupsen/logrus"
- "nn.daxia.dev/model"
- )
- func Auth() gin.HandlerFunc {
- return func(ctx *gin.Context) {
- var err error
- if ctx.Request.Method == "OPTIONS" {
- ctx.Next()
- return
- }
- path := ctx.Request.URL.Path
- if strings.HasPrefix(path, "/connect") {
- ctx.Next()
- return
- }
- userToken := ctx.Request.Header.Get("x-token")
- once := ctx.Request.Header.Get("x-once")
- if userToken == "" || once == "" {
- logrus.Error("参数错误:", "once:", once, " token:", userToken)
- ctx.AbortWithStatus(500)
- return
- }
- userModel := model.User{}
- isValid, err := userModel.TokenIsValid(userToken)
- if err != nil {
- logrus.Error(err)
- ctx.AbortWithStatus(500)
- return
- }
- if !isValid {
- ctx.JSON(200, "用户被禁用")
- ctx.AbortWithStatus(500)
- return
- }
- ctx.Set("req_ctx", map[string]interface{}{
- "userModel": userModel,
- "once": once,
- })
- ctx.Next()
- }
- }
|