jwt

package
v0.1.6 Latest Latest
Warning

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

Go to latest
Published: Aug 8, 2022 License: MIT Imports: 13 Imported by: 0

README

jwt模块

功能描述

jwt-token认证功能模块。根据需要,可使用本地化(localcache)或中心化(redis)的内存存储进行token缓存,默认是本地化的。

文件描述

  • jwt.go
    • 主配置入口
  • token.go
    • token对象的一些解析方法
  • handler.go
    • 接口拦截
  • cache.go
    • 缓存
  • claims.go
    • 业务内容,如过期时间、用户信息
    • 可在此处进行业务代码编写,给结构体CustomerInfo添加业务属性,目前,此结构体仅保存uid字段,作为用户唯一标记。

Documentation

Index

Constants

View Source
const (
	TOKEN_CUSTOMER_INFO = "TOKEN_CUSTOMER_INFO" // 用户信息(claims.CustomerInfo)
)

Variables

View Source
var (
	TokenExpired     = errors.New("Token is expired")
	TokenNotValidYet = errors.New("Token not active yet")
	TokenMalformed   = errors.New("That's not even a token")
	TokenInvalid     = errors.New("Couldn't handle this token:")
)

Functions

func CreateToken

func CreateToken(ci CustomerInfo) (ts string, err error)

需要创建token,这里已经抽象化,可以不用更改,要改,就改CustomerInfo、GetCustomerInfo、SetCustomerInfo

func GetIRoutes

func GetIRoutes(relativePath string) gin.IRoutes

func GetJwtHandler

func GetJwtHandler() gin.HandlerFunc

func RemoveToken added in v0.1.3

func RemoveToken(uid int)

func SetCustomerInfo

func SetCustomerInfo(c *gin.Context, claims BaseClaims)

设置用户信息到会话

Types

type BaseClaims

type BaseClaims struct {
	jwt.StandardClaims
	CustomerInfo
}

载荷,一般用于携带用户名、过期时间等业务信息

type ClaimsParserFunc added in v0.1.2

type ClaimsParserFunc func(jwt.Claims) *BaseClaims
var CustomClaimsParser ClaimsParserFunc

type CustomerInfo

type CustomerInfo struct {
	Uid int `json:"uid,omitempty"` // 通用用户唯一标记,尽量不动这个,否则,其他的代码可能需要更改
}

用户信息,可以放置一些业务字段

func GetCustomerInfo

func GetCustomerInfo(c *gin.Context) CustomerInfo

从会话获取用户信息

func GetCustomerInfoFromTokenString added in v0.1.3

func GetCustomerInfoFromTokenString(ts string) (ci CustomerInfo, err error)

type JWTConfig

type JWTConfig struct {
	Enable             bool       `mapstructure:"enable" json:"enable" yaml:"enable"`                                         // 是否开启
	TokenHeader        string     `mapstructure:"token-header" json:"tokenHeader" yaml:"token-header"`                        // 请求中的header名
	NewTokenHeader     string     `mapstructure:"new-token-header" json:"newTokenHeader" yaml:"new-token-header"`             // 响应新token的header名
	SignKey            string     `mapstructure:"sign-key" json:"signKey" yaml:"sign-key"`                                    // jwt签名
	ExpireTime         int64      `mapstructure:"expire-time" json:"expireTime" yaml:"expire-time"`                           // 过期时间
	RefreshIntervalMin int64      `mapstructure:"refresh-interval-min" json:"refreshIntervalMin" yaml:"refresh-interval-min"` // 刷新token的最小间隔时间
	Issuer             string     `mapstructure:"issuer" json:"issuer" yaml:"issuer"`                                         // 签发者
	HijackCheckEnable  bool       `mapstructure:"hijack-check-enable" json:"hijackCheckEnable" yaml:"hijack-check-enable"`    // 是否开启劫持检测
	MultiPoint         MultiPoint `mapstructure:"multi-point" json:"multiPoint" yaml:"multi-point"`                           // 多点登录拦截
}

func (JWTConfig) Load

func (j JWTConfig) Load()

type MultiPoint

type MultiPoint struct {
	Enable                bool   `mapstructure:"enable" json:"enable" yaml:"enable"`                                                    // 是否开启
	MultiTimeDiffTolerate int64  `mapstructure:"multi-time-diff-tolerate" json:"multiTimeDiffTolerate" yaml:"multi-time-diff-tolerate"` // 服务器时间差容忍值
	HashName              string `mapstructure:"hash-name" json:"hashName" yaml:"hash-name"`                                            // 缓存hash

}

集群中间件配置

Jump to

Keyboard shortcuts

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