Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package jwtutils
- import (
- "fmt"
- "github.com/dgrijalva/jwt-go"
- )
- // Create a JWT token signed with jwtSecret, containing claims. Claims should be primitive string or int values.
- func NewSignedTokenWithClaims(jwtSecret string, claims map[string]interface{}) (string, error) {
- token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims(claims))
- signedToken, err := token.SignedString([]byte(jwtSecret))
- if err != nil {
- return "", err
- }
- return signedToken, nil
- }
- // Verify that the signedToken JWT token was signed with jwtSecret. Returns claims of the JWT token.
- func DecodeClaims(jwtSecret string, signedToken string) (map[string]interface{}, error) {
- token, err := jwt.Parse(signedToken, 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(jwtSecret), nil
- })
- if err != nil {
- return map[string]interface{}{}, err
- }
- if claims, ok := token.Claims.(jwt.MapClaims); ok && token.Valid {
- return claims, nil
- } else {
- return map[string]interface{}{}, err
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement