jwt - skynocover/Wiki-for-GoLang GitHub Wiki
JWT
package jwt
import (
"auth/src/database"
"time"
"github.com/dgrijalva/jwt-go"
)
type authtoken struct {
Account string `json:"account"`
IsAdmin bool `json:"isAdmin"`
Time time.Time `josn:"time"`
jwt.StandardClaims
}
const secret = "627cb2958358c7c6d6e51154e9b07635"
// VerifyToken ...
func VerifyToken(tokenString string) (*authtoken, bool) {
token, err := jwt.ParseWithClaims(tokenString, &authtoken{}, func(token *jwt.Token) (interface{}, error) {
return []byte(secret), nil
})
if err != nil {
return nil, false
}
claims, ok := token.Claims.(*authtoken)
if ok && token.Valid {
return claims, ok
}
return claims, ok
}
// GenToken ...
func GenToken(fuser database.Users) (tokenString string) {
tk := &authtoken{Account: fuser.Account, IsAdmin: fuser.IsAdmin, Time: time.Now()}
token := jwt.NewWithClaims(jwt.GetSigningMethod("HS256"), tk) //宣告使用 HS256 與加入Payload 的聲明內容
tokenString, _ = token.SignedString([]byte(secret))
return
}