1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| package common import ( "demoGin/model" "github.com/dgrijalva/jwt-go" "time" )
var jwtkey = []byte("jwttoken")
var myconnecttoken = "token:mytoken"
type jwtModel struct { UserId uint jwt.StandardClaims }
/* @设置token jwt */ func ReleaseToken(user model.User)(string,error) { outtime :=time.Now().Add(7*24*time.Hour) jwtclaims :=jwtModel{ UserId: user.ID, StandardClaims: jwt.StandardClaims{ ExpiresAt:outtime.Unix(), IssuedAt:time.Now().Unix(), Subject:myconnecttoken, }, } token :=jwt.NewWithClaims(jwt.SigningMethodHS256,jwtclaims) tokenStrng,err :=token.SignedString(jwtkey) if err !=nil{ return "",err } return tokenStrng,err } /* @解析token */ func ParseToken(tokenString string)(*jwt.Token, *jwtModel,error){ jwtClaims := &jwtModel{} token,err :=jwt.ParseWithClaims(tokenString,jwtClaims, func(token *jwt.Token) (i interface{}, e error) { return jwtkey,nil }) return token,jwtClaims,err }
|