Go JWT Authentication with Claims

Generate and validate JWT tokens in Go using the golang-jwt package with custom claims, token expiration, and middleware for protected HTTP routes. Includes.

Go Auth Jwt

Code

snippet
package main

import (
  "fmt"
  "net/http"
  "time"
  "github.com/golang-jwt/jwt/v5"
)

var secretKey = []byte("your-secret-key")

func generateToken(userID string) (string, error) {
  claims := jwt.MapClaims{
    "user_id": userID,
    "exp":     time.Now().Add(24 * time.Hour).Unix(),
  }
  token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
  return token.SignedString(secretKey)
}

func validateToken(tokenString string) (jwt.MapClaims, error) {
  token, err := jwt.Parse(tokenString, func(t *jwt.Token) (interface{}, error) {
    return secretKey, nil
  })
  if err != nil { return nil, err }
  return token.Claims.(jwt.MapClaims), nil
}