需要使用第三方库
go get -u github.com/dgrijalva/jwt-go
func GenerateToken(username, useragent, uuid string) (string, error) {
token := jwt.NewWithClaims(jwt.SigningMethoHS256, jwt.MapClaims{
"username": username,
"useragent": useragent,
"uuid": uuid,
"exp": time.Now().Add(time.Minute * 30).Unix(),
})
return token.SignedString([]byte("this is token key"))
}
func CheckToken(tokenstr, uuid, username, useragent string) bool {
token, err := jwt.Parse(tokenstr, func(token *jwt.Token) (interface{}, error) {
if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
return nil, fmt.Errorf("is not SigningMethodHMAC method ")
}
return []byte("this is token key"), nil
})
if err != nil {
return false
}
if claims, ok := token.Claims.(jwt.MapClaims); ok {
if claims["username"] == username && claims["useragent"] == useragent && claims["exp"] != 0 && claims["uuid"] == uuid {
return true
}
}
return false
}
如果对你有帮助,点个赞呗!!!