jwt

package
v1.5.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 25, 2023 License: MIT Imports: 3 Imported by: 0

README

jwt

Generate and parse token based on jwt library.


Example of use

Example 1: common fields jwt

    import "github.com/liuzw3018/sponge/pkg/jwt"

	jwt.Init(
		// jwt.WithSigningKey("123456"),   // key
		// jwt.WithExpire(time.Hour), // expiry time
		// jwt.WithSigningMethod(jwt.HS512), // encryption method, default is HS256, can be set to HS384, HS512
	)

	uid := "123"
	role := "admin"

	// generate token
	token, err := jwt.GenerateToken(uid)
	// handle err

	// parse token
	claims, err := jwt.ParseToken(token)
	// handle err
	
	// verify
	if claims.Uid != "123" ||claims.Role != "admin" {
		print("verify failed")
	    return
	}

Example 2: custom fields jwt

    import "github.com/liuzw3018/sponge/pkg/jwt"

	jwt.Init(
		// jwt.WithSigningKey("123456"),   // key
		// jwt.WithExpire(time.Hour), // expiry time
		// jwt.WithSigningMethod(jwt.HS512), // encryption method, default is HS256, can be set to HS384, HS512
	)

	fields := jwt.KV{"id": 123, "foo": "bar"}

	// generate token
	token, err := jwt.GenerateCustomToken(uid)
	// handle err

	// parse token
	claims, err := jwt.ParseCustomToken(token)
	// handle err

	// verify
	id, isExist1 := claims.Get("id")
	foo, isExist2 := claims.Get("foo")
	if !isExist1 || !isExist2 || int(id.(float64)) != fields["id"].(int) || foo.(string) != fields["foo"].(string) {
	    print("verify failed")
	    return
	}

Documentation

Overview

Package jwt is token generation and validation.

Index

Constants

This section is empty.

Variables

View Source
var (
	// HS256 Method
	HS256 = jwt.SigningMethodHS256
	// HS384 Method
	HS384 = jwt.SigningMethodHS384
	// HS512 Method
	HS512 = jwt.SigningMethodHS512
)

Functions

func GenerateCustomToken

func GenerateCustomToken(kv map[string]interface{}) (string, error)

GenerateCustomToken generate token by custom fields

func GenerateToken

func GenerateToken(uid string, role ...string) (string, error)

GenerateToken generate token by uid and role

func Init

func Init(opts ...Option)

Init initialize jwt

Types

type Claims

type Claims struct {
	UID  string `json:"uid"`
	Role string `json:"role"`
	jwt.RegisteredClaims
}

Claims my custom claims

func ParseToken

func ParseToken(tokenString string) (*Claims, error)

ParseToken parse token

type CustomClaims

type CustomClaims struct {
	Fields KV `json:"fields"`
	jwt.RegisteredClaims
}

CustomClaims custom fields claims

func ParseCustomToken

func ParseCustomToken(tokenString string) (*CustomClaims, error)

ParseCustomToken parse token

func (*CustomClaims) Get

func (c *CustomClaims) Get(key string) (val interface{}, isExist bool)

Get custom field value by key, if not found, return false

type KV

type KV = map[string]interface{}

KV map type

type Option

type Option func(*options)

Option set the jwt options.

func WithExpire

func WithExpire(d time.Duration) Option

WithExpire set expire value

func WithIssuer

func WithIssuer(issuer string) Option

WithIssuer set issuer value

func WithSigningKey

func WithSigningKey(key string) Option

WithSigningKey set signing key value

func WithSigningMethod

func WithSigningMethod(sm *jwt.SigningMethodHMAC) Option

WithSigningMethod set signing method value

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL