zoukankan      html  css  js  c++  java
  • go-jwt生成token

    JWT生成token

    package util
    
    import (
    	"time"
    
    	jwt "github.com/dgrijalva/jwt-go"
    
    	"github.com/EDDYCJY/go-gin-example/pkg/setting"
    )
    
    var jwtSecret = []byte(setting.JwtSecret)
    
    type Claims struct {
    	Username string `json:"username"`
    	Password string `json:"password"`
    	jwt.StandardClaims
    }
    
    func GenerateToken(username, password string) (string, error) {
    	nowTime := time.Now()
    	expireTime := nowTime.Add(3 * time.Hour)
    
    	claims := Claims{
    		username,
    		password,
    		jwt.StandardClaims {
    			ExpiresAt : expireTime.Unix(),
    			Issuer : "gin-blog",
    		},
    	}
    
    	tokenClaims := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
    	token, err := tokenClaims.SignedString(jwtSecret)
    
    	return token, err
    }
    
    func ParseToken(token string) (*Claims, error) {
    	tokenClaims, err := jwt.ParseWithClaims(token, &Claims{}, func(token *jwt.Token) (interface{}, error) {
    		return jwtSecret, nil
    	})
    
    	if tokenClaims != nil {
    		if claims, ok := tokenClaims.Claims.(*Claims); ok && tokenClaims.Valid {
    			return claims, nil
    		}
    	}
    
    	return nil, err
    }
    
  • 相关阅读:
    计算几何
    HDU 4267
    HDU 4277
    NYOJ 123(插线问点)
    Set
    HDU 1792
    从文本文件读取数据到用vector实现的二维数组中
    为什么计算机采用二进制而不是八进制或者十六进制
    Google C++编程风格指南1
    编程中的命名设计
  • 原文地址:https://www.cnblogs.com/tomtellyou/p/12552252.html
Copyright © 2011-2022 走看看