Advertisement
Guest User

Untitled

a guest
Sep 19th, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 1.15 KB | None | 0 0
  1. package jwtutils
  2.  
  3. import (
  4.     "fmt"
  5.     "github.com/dgrijalva/jwt-go"
  6. )
  7.  
  8. // Create a JWT token signed with jwtSecret, containing claims. Claims should be primitive string or int values.
  9. func NewSignedTokenWithClaims(jwtSecret string, claims map[string]interface{}) (string, error) {
  10.     token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims(claims))
  11.  
  12.     signedToken, err := token.SignedString([]byte(jwtSecret))
  13.     if err != nil {
  14.         return "", err
  15.     }
  16.  
  17.     return signedToken, nil
  18. }
  19.  
  20. // Verify that the signedToken JWT token was signed with jwtSecret. Returns claims of the JWT token.
  21. func DecodeClaims(jwtSecret string, signedToken string) (map[string]interface{}, error) {
  22.     token, err := jwt.Parse(signedToken, func(token *jwt.Token) (interface{}, error) {
  23.         if _, ok := token.Method.(*jwt.SigningMethodHMAC); !ok {
  24.             return nil, fmt.Errorf("Unexpected signing method: %v", token.Header["alg"])
  25.         }
  26.  
  27.         return []byte(jwtSecret), nil
  28.     })
  29.     if err != nil {
  30.         return map[string]interface{}{}, err
  31.     }
  32.  
  33.     if claims, ok := token.Claims.(jwt.MapClaims); ok && token.Valid {
  34.         return claims, nil
  35.     } else {
  36.         return map[string]interface{}{}, err
  37.     }
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement