jwt

package module
v0.0.0-...-81c9e6a Latest Latest
Warning

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

Go to latest
Published: Nov 14, 2021 License: MIT Imports: 7 Imported by: 0

README

jwt

简单的jwt实现

jwt是什么

JSON Web token ,通过数字签名的方式,以JSON对象为载体,在不同的服务终端之间安全的传输

jwt的作用

jwt最常见的场景就是授权认证,一旦用户登录,后续每个请求都将包换jwt,系统在每次处理用户的请求之前,都要先进行jwt安全校验,通过之后再进行处理

jwt的组成

jwt由3部门组成,用 . 拼接

这三部分分别是:

  • Header
{
    "typ":"JWT",
    "alg":"HS256"
}
  • Payload
{
    "sub":"12345679890",
    "name":"john",
    "admin":true
}

Signature

var encodedString = base64urlEncode(header)+'.'+
base64UrlEncode(payload);
var signature = HMACSHA256(encodedString,'secret')

JWT Token: Header Base64 + . + Payload Base64 + . + Signature

How To Use
  • Install

go get github.com/HuCuiGang/jwt

  • Use

生成带签名的的token

    jwt := NewJwt("111")
    payload := make(map[string]interface{}) //map in Store user information
    payload["sub"] = "1234567890" 
    payload["name"] = "join" 
    payload["admin"] = true 
    tokenStr,err := jwt.CreateToken(payload)
    if err != nil { 
        fmt.Println(err)
        return 
    }
    fmt.Println("生成tokenStr:",tokenStr)

将token转换为structure

    token, err := TokenFormatString(tokenStr)
	if err != nil {
		fmt.Println(token)
		return
	}
	fmt.Printf("token:%v ,type:%T \n",token,token)

验证token签名

    err = jwt.VerificationSignature(token)
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println("验证通过~")

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func SignatureToHS256

func SignatureToHS256(base64Str string, key string) (string, error)

SignatureToHS256 :使用HS256加密生成签名

Types

type AlgType

type AlgType string
const (
	HS256 AlgType = "HS256"
	RS256 AlgType = "RS256"
)
type Header struct {
	Typ string
	Alg AlgType
}

type JWT

type JWT struct {
	// contains filtered or unexported fields
}

func NewJwt

func NewJwt(key string) *JWT

func (*JWT) CreateToken

func (jwt *JWT) CreateToken(payload map[string]interface{}) (string, error)

CreateToken :生成token

func (*JWT) VerificationSignature

func (jwt *JWT) VerificationSignature(token Token) error

VerificationSignature :验证token签名

type Token

type Token struct {
	Header    Header
	Payload   map[string]interface{}
	Signature string
	// contains filtered or unexported fields
}

func TokenFormatString

func TokenFormatString(token string) (Token, error)

TokenFormatString :将token转换为token结构体

Jump to

Keyboard shortcuts

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