sunty
2019-06-28 88d229d880079db1d31af1d4cbed3b8eb12fd47d
middlewares/auth/jwt.go
@@ -2,7 +2,6 @@
import (
   "encoding/json"
   "errors"
   jwtLib "github.com/dgrijalva/jwt-go"
   "github.com/dgrijalva/jwt-go/request"
   "github.com/gin-gonic/gin"
@@ -14,14 +13,14 @@
type jwtAuthManager struct {
   secret string
   expire time.Duration
   alg string
   alg    string
}
func NewJwtAuthDriver() *jwtAuthManager{
func NewJwtAuthDriver() *jwtAuthManager {
   return &jwtAuthManager{
      secret:TokenKey,
      expire:time.Hour*8,
      alg:"HS256",
      secret: TokenKey,
      expire: time.Hour * 8,
      alg:    "HS256",
   }
}
@@ -35,44 +34,44 @@
   if len(t) < 2 {
      return false
   }
   var keyFunc = func(token *jwtLib.Token) (interface{},error) {
   var keyFunc = func(token *jwtLib.Token) (interface{}, error) {
      b := []byte(jwtAuth.secret)
      return b,nil
      return b, nil
   }
   authJwtToken, err:= request.ParseFromRequest(c.Request,request.OAuth2Extractor,keyFunc)
   if err !=nil {
   authJwtToken, err := request.ParseFromRequest(c.Request, request.OAuth2Extractor, keyFunc)
   if err != nil {
      return false
   }
   c.Set("User",map[string]interface{}{
      "token":authJwtToken,
   c.Set("User", map[string]interface{}{
      "token": authJwtToken,
   })
   return authJwtToken.Valid
}
func (jwtAuth *jwtAuthManager) User(c *gin.Context) interface{}{
func (jwtAuth *jwtAuthManager) User(c *gin.Context) interface{} {
   var jwtToken *jwtLib.Token
   if jwtUser, exist := c.Get("User");!exist{
      tokenStr :=strings.Replace(c.Request.Header.Get("Authorization"),"Bearer ","",-1)
      if tokenStr == ""{
   if jwtUser, exist := c.Get("User"); !exist {
      tokenStr := strings.Replace(c.Request.Header.Get("Authorization"), "Bearer ", "", -1)
      if tokenStr == "" {
         return map[interface{}]interface{}{}
      }
      var err error
      jwtToken,err = jwtLib.Parse(tokenStr, func(token *jwtLib.Token) (interface{}, error) {
         b :=[]byte(jwtAuth.secret)
         return b,nil
      jwtToken, err = jwtLib.Parse(tokenStr, func(token *jwtLib.Token) (interface{}, error) {
         b := []byte(jwtAuth.secret)
         return b, nil
      })
      if err !=nil {
         panic(err)
      if err != nil {
         return nil
      }
   } else {
      jwtToken = jwtUser.(map[string]interface{})["token"].(*jwtLib.Token)
   }
   if claims,ok :=jwtToken.Claims.(jwtLib.MapClaims);ok && jwtToken.Valid{
   if claims, ok := jwtToken.Claims.(jwtLib.MapClaims); ok && jwtToken.Valid {
      var user map[string]interface{}
      if err := json.Unmarshal([]byte(claims["user"].(string)), &user); err != nil {
         panic(err)
         return nil
      }
      c.Set("User", map[string]interface{}{
         "token": jwtToken,
@@ -80,7 +79,7 @@
      })
      return user
   } else {
      panic(errors.New("decode jwt user claims fail"))
      return nil
   }
}