| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- package token
- import (
- "errors"
- "fmt"
- "mtp2_if/global/e"
- "mtp2_if/rediscli"
- "net/http"
- "strings"
- "github.com/gin-gonic/gin"
- )
- // CheckToken Token校验
- func CheckToken(loginid string, token string) error {
- key := fmt.Sprintf("monitor:online_loginid::%s", loginid)
- field := "Token"
- realToken, err := rediscli.GetRedisClient().HGet(key, field).Result()
- if err != nil {
- return err
- }
- if realToken != token {
- return errors.New("token is invalid")
- }
- return nil
- }
- // Auth Token校验中间件
- func Auth() gin.HandlerFunc {
- return func(c *gin.Context) {
- var code int
- var data interface{}
- code = e.SUCCESS
- token := c.GetHeader("Authorization")
- if token == "" {
- // Token缺失
- code = e.ERROR_AUTH_CHECK_TOKEN_MISSING
- } else {
- // 获取loginid
- s := strings.Split(token, "_")
- loginid := s[0]
- if err := CheckToken(loginid, token); err != nil {
- // Token错误
- code = e.ERROR_AUTH_CHECK_TOKEN_FAIL
- }
- }
- // Token检验失败
- if code != e.SUCCESS {
- c.JSON(http.StatusUnauthorized, gin.H{
- "code": code,
- "msg": e.GetMsg(code),
- "data": data,
- })
- c.Abort()
- return
- }
- // Token检验成功
- c.Next()
- }
- }
|