package main import ( "fmt" "time" "github.com/dgrijalva/jwt-go" "gopkg.in/gin-gonic/gin.v1" ) func verifyLogin(c *gin.Context) bool { tokenString, err := c.Cookie("authentication") if err != nil { return false } token, err := jwt.Parse(tokenString, func(token *jwt.Token) (interface{}, error) { if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok { return nil, fmt.Errorf("Unexpected signing method: %v", token.Header["alg"]) } return []byte(secret), nil }) if !verifyToken(c, token, err) { c.SetCookie("authentication", "", -1, "", "", false, false) return false } return true } func verifyToken(c *gin.Context, token *jwt.Token, err error) bool { if err != nil { return false } claims, ok := token.Claims.(jwt.MapClaims) if !ok || !token.Valid { return false } if !claims.VerifyExpiresAt(time.Now().Unix(), true) { return false } return true }