token

package module
v0.0.0-...-92acf13 Latest Latest
Warning

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

Go to latest
Published: Sep 14, 2020 License: MIT Imports: 6 Imported by: 0

README

Token

快速生成和刷新 Auth Token

使用示例
package main

import (
	"encoding/json"
	"fmt"
	"github.com/qq1060656096/token"
)

func main() {
	var expires int64 = 7200000000
	signingKey := "123456"
	data := "api token data"
	// 创建token
	apiTokenData, err := token.CreateApiToken(expires, signingKey, data)
	if err != nil {
		// error todo
	}
	jsonBytes, err := json.Marshal(apiTokenData)
	if err != nil {
		// error todo
	}
	fmt.Println("CreateApiToken", string(jsonBytes))
	/**
	CreateApiToken
	{
	    "access_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjcyMDAwMDAwMDAsImlzcyI6ImV5SlNZWGRFWVhSaElqb2lZWEJwSUhSdmEyVnVJR1JoZEdFaUxDSlViMnRsYmxSNWNHVWlPaUpDWldGeVpYSWlMQ0pVYVcxbGMzUmhiWEFpT2pFMk1EQXdPVEV4Tnpnc0lrVjRjR2x5WlhNaU9qY3lNREF3TURBd01EQXNJbEpsWm5KbGMyZ2lPbVpoYkhObExDSlRhV2R1WVhSMWNtVWlPaUlpZlE9PS5TR0ptVlV0d1pXTjFZM0U1TURCcExYb3pVbXBDWWtodmNVeDRNWE5IUkhCaFNXdHhRMmgwWW1kT1ZRPT0ifQ.JfIgN-I55vnullHTZ9EJVwVlGJX4bB4mdGYo9VJOOL8",
	    "token_type":"Bearer",
	    "expires_in":7200000000,
	    "refresh_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjcyMDAwMDAwMDAsImlzcyI6ImV5SlNZWGRFWVhSaElqb2lZWEJwSUhSdmEyVnVJR1JoZEdFaUxDSlViMnRsYmxSNWNHVWlPaUpDWldGeVpYSWlMQ0pVYVcxbGMzUmhiWEFpT2pFMk1EQXdPVEV4Tnpnc0lrVjRjR2x5WlhNaU9qY3lNREF3TURBd01EQXNJbEpsWm5KbGMyZ2lPblJ5ZFdVc0lsTnBaMjVoZEhWeVpTSTZJaUo5LlJucEJXR05KVFcxeloweEtkSGcwU0V4S04wZGljMDV4YkRsYVlsUlFlWEZyVm1OamFFZzVNVkppZHc9PSJ9.xnp-jINwlu42Ty1UDUAJjJVHQcCebMJENAj_juNn5DI"
	}
	*/

	// 刷新token
	refreshTokenStr := "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjcyMDAwMDAwMDAsImlzcyI6ImV5SlNZWGRFWVhSaElqb2lZWEJwSUhSdmEyVnVJR1JoZEdFaUxDSlViMnRsYmxSNWNHVWlPaUpDWldGeVpYSWlMQ0pVYVcxbGMzUmhiWEFpT2pFMk1EQXdPVEV4Tnpnc0lrVjRjR2x5WlhNaU9qY3lNREF3TURBd01EQXNJbEpsWm5KbGMyZ2lPblJ5ZFdVc0lsTnBaMjVoZEhWeVpTSTZJaUo5LlJucEJXR05KVFcxeloweEtkSGcwU0V4S04wZGljMDV4YkRsYVlsUlFlWEZyVm1OamFFZzVNVkppZHc9PSJ9.xnp-jINwlu42Ty1UDUAJjJVHQcCebMJENAj_juNn5DI"
	apiTokenData, err = token.RefreshApiToken(expires, signingKey, refreshTokenStr)
	if err != nil {
		// error todo
	}
	jsonBytes, err = json.Marshal(apiTokenData)
	if err != nil {
		// error todo
	}
	fmt.Println("RefreshApiToken", string(jsonBytes))
	/**
	RefreshApiToken
	{
	    "access_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjcyMDAwMDAwMDAsImlzcyI6ImV5SlNZWGRFWVhSaElqcDdJbEpoZDBSaGRHRWlPaUpoY0drZ2RHOXJaVzRnWkdGMFlTSXNJbFJ2YTJWdVZIbHdaU0k2SWtKbFlYSmxjaUlzSWxScGJXVnpkR0Z0Y0NJNk1UWXdNREE1TVRFM09Dd2lSWGh3YVhKbGN5STZOekl3TURBd01EQXdNQ3dpVW1WbWNtVnphQ0k2ZEhKMVpTd2lVMmxuYm1GMGRYSmxJam9pSW4wc0lsUnZhMlZ1Vkhsd1pTSTZJa0psWVhKbGNpSXNJbFJwYldWemRHRnRjQ0k2TVRZd01EQTVNVEkzTXl3aVJYaHdhWEpsY3lJNk56SXdNREF3TURBd01Dd2lVbVZtY21WemFDSTZabUZzYzJVc0lsTnBaMjVoZEhWeVpTSTZJaUo5LmNYVkRlbGQ2V25JMlJHMU5aRkkxWVcxbU1tWldiak5hTVdSUE9IRlhSVmRIV1dGVVNXSTFkR2RpU1E9PSJ9.ffmMCUMsyZB36xweTpN-vrt4Tq7358RW4eKkPhigQoc",
	    "token_type":"Bearer",
	    "expires_in":7200000000,
	    "refresh_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjcyMDAwMDAwMDAsImlzcyI6ImV5SlNZWGRFWVhSaElqb2lZWEJwSUhSdmEyVnVJR1JoZEdFaUxDSlViMnRsYmxSNWNHVWlPaUpDWldGeVpYSWlMQ0pVYVcxbGMzUmhiWEFpT2pFMk1EQXdPVEV5TnpNc0lrVjRjR2x5WlhNaU9qY3lNREF3TURBd01EQXNJbEpsWm5KbGMyZ2lPblJ5ZFdVc0lsTnBaMjVoZEhWeVpTSTZJaUo5LloyWmhhRFZGZDJReVJIbGtRMnB1TFZOT2EwdDNSelpqUzFrMGNqbHZialpTWm1JNWNGTXhaRWx0WXc9PSJ9.EeOnpLZXZ47cAYVxdView7ifJuIGEdSLyjpC8pTmH4c"
	}
	*/
}

Documentation

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewBearerJwtToken

func NewBearerJwtToken(expires int64, signingKey string) *token
Example
expires := int64(2862226989)
signingKey := "123456"
token := NewBearerJwtToken(expires, signingKey)
apiTokenMap := make(map[string]interface{})
data := "user.id.1"
tokenStr, err := token.Get(data)
if err != nil {
	// error todo
}
refreshTokenStr, err := token.GetRefresh(data)
if err != nil {
	// error todo
}

apiTokenMap["access_token"] = tokenStr
apiTokenMap["token_type"] = token.GetType()
apiTokenMap["expires_in"] = token.GetExpires()
apiTokenMap["refresh_token"] = refreshTokenStr
jsonStr, err := json.Marshal(apiTokenMap)
if err != nil {
	// error todo
}
log.Println(string(jsonStr))
/**
{
    "access_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjI4NjIyMjY5ODksImlzcyI6ImV5SlNZWGRFWVhSaElqb2lkWE5sY2k1cFpDNHhJaXdpVkc5clpXNVVlWEJsSWpvaVFtVmhjbVZ5SWl3aVZHbHRaWE4wWVcxd0lqb3hOakF3TURBNU9USXpMQ0pGZUhCcGNtVnpJam95T0RZeU1qSTJPVGc1TENKU1pXWnlaWE5vSWpwbVlXeHpaU3dpVTJsbmJtRjBkWEpsSWpvaUluMD0uUjBaQlp6bDBXWEpoYm14S1J6UllTbWwyWTB4ZlUyVTFlbXRoT1VKbE9FNXVkREpEVW5GMGExVkhRUT09In0.ZwSwy7LFsRd7DpWZ9v_o09wXisZoqmAzo2YvdaLVG0w",
    "expires_in":2862226989,
    "refresh_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjI4NjIyMjY5ODksImlzcyI6ImV5SlNZWGRFWVhSaElqb2lkWE5sY2k1cFpDNHhJaXdpVkc5clpXNVVlWEJsSWpvaVFtVmhjbVZ5SWl3aVZHbHRaWE4wWVcxd0lqb3hOakF3TURBNU9USXpMQ0pGZUhCcGNtVnpJam95T0RZeU1qSTJPVGc1TENKU1pXWnlaWE5vSWpwMGNuVmxMQ0pUYVdkdVlYUjFjbVVpT2lJaWZRPT0uTVZWWlMySjBhMlZPUm5ZM01tOTZObVZvWDNWTlRHTldiMlpwY2pWd05HTXRSRTQwVjI1QlJXbEhOQT09In0.l2WQwypvE-RhrG6KZK_eO5Yp0JRiAJMbSjbq1Qxlib8",
    "token_type":"Bearer"
}
*/
}
*/
Output:

func NewJwtToken

func NewJwtToken(tokenType string, expires int64, signingKey string, jwtSigningMethod jwt.SigningMethod) *token

func NewToken

func NewToken(decoder Decoder, expires int64) *token

Types

type ApiTokenData

type ApiTokenData struct {
	AccessToken  string `json:"access_token"`
	TokenType    string `json:"token_type"`
	ExpiresIn    int64  `json:"expires_in"`
	RefreshToken string `json:"refresh_token"`
}

func CreateApiToken

func CreateApiToken(expires int64, signingKey string, data interface{}) (td *ApiTokenData, err error)

func RefreshApiToken

func RefreshApiToken(expires int64, signingKey string, refreshTokenStr string) (td *ApiTokenData, err error)

type Data

type Data struct {
	RawData   interface{}
	TokenType string
	Timestamp int64
	Expires   int64
	Refresh   bool
	Signature string
}

Data

func NewData

func NewData(data interface{}, tokenType string, expires int64) *Data

NewData

func NewRefreshData

func NewRefreshData(data interface{}, tokenType string, expires int64) *Data

NewRefreshData

type Decoder

type Decoder interface {
	GetTokenType() string
	Encode(data *Data) (token string, err error)
	Decode(token string) (data *Data, err error)
}

type JwtDecode

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

func NewJwtDecode

func NewJwtDecode(tokenType, signingKey string, jwtSigningMethod jwt.SigningMethod) *JwtDecode

func (*JwtDecode) Decode

func (o *JwtDecode) Decode(tokenStr string) (data *Data, err error)

func (*JwtDecode) Encode

func (o *JwtDecode) Encode(data *Data) (tokenStr string, err error)

func (*JwtDecode) GetTokenType

func (o *JwtDecode) GetTokenType() string

type Tokener

type Tokener interface {
	GetDecoder() Decoder
	GetType() string
	GetExpires() int64
	Get(data interface{}) (token string, error error)
	GetRefresh(data interface{}) (newRefreshToken string, error error)
	Refresh(refreshToken string) (newRefreshToken string, err error)
	Validate(token string) (data *Data, err error)
}

Jump to

Keyboard shortcuts

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