| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- package main
- import (
- "github.com/gin-gonic/gin"
- "net/http"
- "standard/token/jwt/token"
- "strings"
- "time"
- )
- // JwtMiddleware jwt中间件
- func JwtMiddleware() gin.HandlerFunc {
- return func(c *gin.Context) {
- //从请求头中获取token
- tokenStr := c.Request.Header.Get("Authorization")
- //用户不存在
- if tokenStr == "" {
- c.JSON(http.StatusOK, gin.H{"code": 0, "msg": "用户不存在"})
- c.Abort() //阻止执行
- return
- }
- //token格式错误
- tokenSlice := strings.SplitN(tokenStr, " ", 2)
- if len(tokenSlice) != 2 && tokenSlice[0] != "Bearer" {
- c.JSON(http.StatusOK, gin.H{"code": 0, "msg": "token格式错误"})
- c.Abort() //阻止执行
- return
- }
- //验证token
- tokenStruck, ok := token.CheckToken(tokenSlice[1])
- if !ok {
- c.JSON(http.StatusOK, gin.H{"code": 0, "msg": "token不正确"})
- c.Abort() //阻止执行
- return
- }
- //token超时
- if time.Now().Unix() > tokenStruck.ExpiresAt {
- c.JSON(http.StatusOK, gin.H{"code": 0, "msg": "token过期"})
- c.Abort() //阻止执行
- return
- }
- c.Set("username", tokenStruck.UserName)
- c.Set("user_id", tokenStruck.UserId)
- c.Next()
- }
- }
|