oauth2

package module
v1.2.0 Latest Latest
Warning

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

Go to latest
Published: Jun 4, 2016 License: Apache-2.0 Imports: 18 Imported by: 0

README

Golang OAuth 2.0协议实现

GoDoc Go Report Card

获取

$ go get -v gopkg.in/oauth2.v1

范例

使用之前,初始化客户端信息

package main

import (
	"fmt"

	"gopkg.in/oauth2.v1"
)

func main() {
	// 初始化配置参数
	ocfg := &oauth2.OAuthConfig{
		ACConfig: &oauth2.ACConfig{
			ATExpiresIn: 60 * 60 * 24,
		},
	}
	mcfg := oauth2.NewMongoConfig("mongodb://127.0.0.1:27017", "test")

	// 创建默认的OAuth2管理实例(基于MongoDB)
	manager, err := oauth2.NewDefaultOAuthManager(ocfg, mcfg, "xxx", "xxx")
	if err != nil {
		panic(err)
	}
	manager.SetACGenerate(oauth2.NewDefaultACGenerate())
	manager.SetACStore(oauth2.NewACMemoryStore(0))

	// 模拟授权码模式
	// 使用默认参数,生成授权码
	code, err := manager.GetACManager().
		GenerateCode("clientID_x", "userID_x", "http://www.example.com/cb", "scopes")
	if err != nil {
		panic(err)
	}

	// 生成访问令牌及更新令牌
	genToken, err := manager.GetACManager().
		GenerateToken(code, "http://www.example.com/cb", "clientID_x", "clientSecret_x", true)
	if err != nil {
		panic(err)
	}

	// 检查访问令牌
	checkToken, err := manager.CheckAccessToken(genToken.AccessToken)
	if err != nil {
		panic(err)
	}

	// TODO: 使用用户标识、申请的授权范围响应数据
	fmt.Println(checkToken.UserID, checkToken.Scope)

	// 更新令牌
	newToken, err := manager.RefreshAccessToken(checkToken.RefreshToken, "scopes")
	if err != nil {
		panic(err)
	}
	fmt.Println(newToken.AccessToken, newToken.ATExpiresIn)
	// TODO: 将新的访问令牌响应给客户端
	
}

执行测试

$ go test -v
# 或
$ goconvey -port=9090

License

Copyright 2016.All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Documentation

Index

Constants

View Source
const (
	// DefaultRandomCodeLen 默认随机码的长度
	DefaultRandomCodeLen = 6
	// DefaultACExpiresIn 默认授权码模式的授权码有效期(10分钟)
	DefaultACExpiresIn = 60 * 10
	// DefaultATExpiresIn 默认授权码模式的访问令牌有效期(7天)
	DefaultATExpiresIn = 60 * 60 * 24 * 7
	// DefaultRTExpiresIn 默认授权码模式的更新令牌有效期(30天)
	DefaultRTExpiresIn = 60 * 60 * 24 * 30
	// DefaultIATExpiresIn 默认简化模式的访问令牌有效期(1小时)
	DefaultIATExpiresIn = 60 * 60
	// DefaultCCATExpiresIn 默认客户端模式的访问令牌有效期(1天)
	DefaultCCATExpiresIn = 60 * 60 * 24
)
View Source
const (
	// DefaultACRedisIDKey Redis存储授权码唯一标识的键
	DefaultACRedisIDKey = "ACID"
)
View Source
const (
	// DefaultClientCollectionName 默认的客户端存储集合名称
	DefaultClientCollectionName = "ClientInfo"
)
View Source
const (
	// DefaultTokenCollectionName 默认的令牌存储集合名称
	DefaultTokenCollectionName = "AuthToken"
)

Variables

View Source
var (
	// ErrClientNotFound Client not found
	ErrClientNotFound = errors.New("The client is not found.")

	// ErrACNotFound Authorization code not found
	ErrACNotFound = errors.New("The authorization code is not found.")

	// ErrACInvalid Authorization code invalid
	ErrACInvalid = errors.New("The authorization code is invalid.")

	// ErrCSInvalid Client secret invalid
	ErrCSInvalid = errors.New("The client secret is invalid.")

	// ErrATNotFound Refresh token not found
	ErrATNotFound = errors.New("The access token is not found.")

	// ErrATInvalid Access token invalid
	ErrATInvalid = errors.New("The access token is invalid.")

	// ErrATExpire Access token expire
	ErrATExpire = errors.New("The access token is expire.")

	// ErrRTNotFound Refresh token not found
	ErrRTNotFound = errors.New("The refresh token is not found.")

	// ErrRTInvalid Refresh token invalid
	ErrRTInvalid = errors.New("The refresh token is invalid.")

	// ErrRTExpire Refresh token expire
	ErrRTExpire = errors.New("The refresh token is expire.")
)

Functions

func ValidateURI

func ValidateURI(baseURI string, redirectURI string) error

ValidateURI 验证基础的Uri与重定向的URI是否一致

Types

type ACConfig

type ACConfig struct {
	ACExpiresIn int64 // 授权码有效期(单位秒)
	ATExpiresIn int64 // 访问令牌有效期(单位秒)
	RTExpiresIn int64 // 更新令牌有效期(单位秒)
}

ACConfig 授权码模式配置参数(Authorization Code Config)

type ACGenerate

type ACGenerate interface {
	// Code 根据授权码相关信息生成授权码
	Code(info *ACInfo) (string, error)

	// Parse 解析授权码,返回授权信息ID
	Parse(code string) (int64, error)

	// Verify 验证授权码的有效性
	Verify(code string, info *ACInfo) (bool, error)
}

ACGenerate 授权码生成接口(Authorization Code Generate)

func NewDefaultACGenerate

func NewDefaultACGenerate() ACGenerate

NewDefaultACGenerate 创建默认的授权码生成方式

type ACGenerateDefault

type ACGenerateDefault struct{}

ACGenerateDefault 默认的授权码生成方式

func (*ACGenerateDefault) Code

func (ag *ACGenerateDefault) Code(info *ACInfo) (string, error)

Code Authorization code

func (*ACGenerateDefault) Parse

func (ag *ACGenerateDefault) Parse(code string) (id int64, err error)

Parse Parse authorization code

func (*ACGenerateDefault) Verify

func (ag *ACGenerateDefault) Verify(code string, info *ACInfo) (valid bool, err error)

Verify Verify code

type ACInfo

type ACInfo struct {
	ID          int64         // 唯一标识
	ClientID    string        // 客户端标识
	UserID      string        // 用户标识
	RedirectURI string        // 重定向URI
	Scope       string        // 申请的权限范围
	Code        string        // 随机码
	CreateAt    int64         // 创建时间(时间戳)
	ExpiresIn   time.Duration // 有效期(单位秒)
}

ACInfo 授权码信息(Authorization Code Info)

type ACManager

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

ACManager 授权码模式管理(Authorization Code Manager)

func NewACManager

func NewACManager(oaManager *OAuthManager, config *ACConfig) *ACManager

NewACManager 创建授权码模式管理实例 oaManager OAuth授权管理 config 配置参数(nil则使用默认值)

func (*ACManager) GenerateCode

func (am *ACManager) GenerateCode(clientID, userID, redirectURI, scopes string) (code string, err error)

GenerateCode 生成授权码 clientID 客户端标识 userID 用户标识 redirectURI 重定向URI scopes 应用授权标识

func (*ACManager) GenerateToken

func (am *ACManager) GenerateToken(code, redirectURI, clientID, clientSecret string, isGenerateRefresh bool) (token *Token, err error)

GenerateToken 生成令牌 code 授权码 redirectURI 重定向URI clientID 客户端标识 clientSecret 客户端秘钥 isGenerateRefresh 是否生成更新令牌

type ACMemoryStore

type ACMemoryStore struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

ACMemoryStore 提供授权码的内存存储

func (*ACMemoryStore) Put

func (am *ACMemoryStore) Put(item ACInfo) (int64, error)

Put Put item

func (*ACMemoryStore) TakeByID

func (am *ACMemoryStore) TakeByID(id int64) (*ACInfo, error)

TakeByID Take item by ID

type ACRedisStore added in v1.2.0

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

ACRedisStore 提供授权码的redis存储

func NewACRedisStore added in v1.2.0

func NewACRedisStore(cfg *RedisConfig, key string) (*ACRedisStore, error)

NewACRedisStore 创建Redis存储的实例 config Redis配置参数 key Redis存储授权码唯一标识的键(默认为ACID)

func (*ACRedisStore) Put added in v1.2.0

func (ar *ACRedisStore) Put(item ACInfo) (id int64, err error)

Put 存储授权码

func (*ACRedisStore) TakeByID added in v1.2.0

func (ar *ACRedisStore) TakeByID(id int64) (info *ACInfo, err error)

TakeByID 取出授权码

type ACStore

type ACStore interface {
	// Put 将元素放入存储,返回存储的ID
	// 如果存储发生异常,则返回错误
	Put(item ACInfo) (int64, error)

	// TakeByID 根据ID取出元素
	// 如果元素找不到或发生异常,则返回错误
	TakeByID(id int64) (*ACInfo, error)
}

ACStore 授权码存储接口(临时存储,提供自动GC过期的元素)(Authorization Code Store)

func NewACMemoryStore

func NewACMemoryStore(gcInterval int64) ACStore

NewACMemoryStore 创建授权码的内存存储 gcInterval GC周期(单位秒,默认60秒执行一次)

type CCConfig

type CCConfig struct {
	ATExpiresIn int64 // 访问令牌有效期(单位秒)
}

CCConfig 客户端模式配置参数(Client Credentials Config)

type CCManager

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

CCManager 客户端模式管理(Client Credentials Manager)

func NewCCManager

func NewCCManager(oaManager *OAuthManager, config *CCConfig) *CCManager

NewCCManager 创建默认的客户端模式管理实例 oaManager OAuth授权管理 config 配置参数(nil则使用默认值)

func (*CCManager) GenerateToken

func (cm *CCManager) GenerateToken(clientID, clientSecret, scopes string) (token *Token, err error)

GenerateToken 生成令牌(只生成访问令牌) clientID 客户端标识 clientSecret 客户端秘钥 scopes 应用授权标识

type Client

type Client interface {
	// ID 客户端唯一标识
	ID() string
	// Secret 客户端秘钥
	Secret() string
	// Domain 客户端域名
	Domain() string
	// RetainData 保留数据
	RetainData() interface{}
}

Client 客户端的验证信息接口

type ClientMongoStore

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

ClientMongoStore 基于MongoDB的默认客户端信息存储

func (*ClientMongoStore) GetByID

func (dcm *ClientMongoStore) GetByID(id string) (client Client, err error)

GetByID 根据ID获取客户端信息

type ClientStore

type ClientStore interface {
	// GetByID 根据ID获取客户端信息;
	// 如果客户端不存在则返回nil
	GetByID(id string) (Client, error)
}

ClientStore 客户端存储接口(持久化存储)

func NewClientMongoStore

func NewClientMongoStore(mongoConfig *MongoConfig, cName string) (ClientStore, error)

NewClientMongoStore 创建基于MongoDB的客户端存储方式 mongoConfig MongoDB配置参数 cName 存储客户端的集合名称(默认为ClientInfo)

type DefaultClient

type DefaultClient struct {
	ClientID     string `bson:"_id"`    // 客户端唯一标识
	ClientSecret string `bson:"Secret"` // 客户端秘钥
	ClientDomain string `bson:"Domain"` // 客户端域名
}

DefaultClient 默认的客户端信息

func (DefaultClient) Domain

func (dc DefaultClient) Domain() string

Domain Get ClientDomain

func (DefaultClient) ID

func (dc DefaultClient) ID() string

ID Get ClientID

func (DefaultClient) RetainData

func (dc DefaultClient) RetainData() interface{}

RetainData Get retain data

func (DefaultClient) Secret

func (dc DefaultClient) Secret() string

Secret Get ClientSecret

type ImplicitConfig

type ImplicitConfig struct {
	ATExpiresIn int64 // 访问令牌有效期(单位秒)
}

ImplicitConfig 简化模式配置参数

type ImplicitManager

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

ImplicitManager 简化模式管理

func NewImplicitManager

func NewImplicitManager(oaManager *OAuthManager, config *ImplicitConfig) *ImplicitManager

NewImplicitManager 创建默认的简化模式管理实例 oaManager OAuth授权管理 config 配置参数(nil则使用默认值)

func (*ImplicitManager) GenerateToken

func (im *ImplicitManager) GenerateToken(clientID, userID, redirectURI, scopes string) (token *Token, err error)

GenerateToken 生成令牌(只生成访问令牌) clientID 客户端标识 userID 用户标识 redirectURI 重定向URI scopes 应用授权标识

type MongoConfig

type MongoConfig struct {
	URL    string // MongoDB连接字符串
	DBName string // 数据库名称
}

MongoConfig MongoDB配置参数

func NewMongoConfig

func NewMongoConfig(url, dbName string) *MongoConfig

NewMongoConfig 创建MongoDB配置参数的实例

type OAuthConfig

type OAuthConfig struct {
	ACConfig       *ACConfig       // 授权码模式配置参数
	ImplicitConfig *ImplicitConfig // 简化模式配置参数
	PasswordConfig *PasswordConfig // 密码模式配置参数
	CCConfig       *CCConfig       // 客户端模式配置参数
}

OAuthConfig OAuth授权配置参数

type OAuthManager

type OAuthManager struct {
	Config        *OAuthConfig  // 配置参数
	ACGenerate    ACGenerate    // 授权码生成
	ACStore       ACStore       // 授权码存储
	TokenGenerate TokenGenerate // 令牌生成
	TokenStore    TokenStore    // 令牌存储
	ClientStore   ClientStore   // 客户端存储
}

OAuthManager OAuth授权管理

func NewDefaultOAuthManager added in v1.2.0

func NewDefaultOAuthManager(cfg *OAuthConfig, mcfg *MongoConfig, ccName, tcName string) (*OAuthManager, error)

NewDefaultOAuthManager 创建默认的OAuth授权管理实例 cfg 配置参数 mcfg MongoDB配置参数 ccName 存储客户端的集合名称(默认为ClientInfo) tcName 存储令牌的集合名称(默认为AuthToken)

func NewOAuthManager added in v1.2.0

func NewOAuthManager(cfg *OAuthConfig) *OAuthManager

NewOAuthManager 创建OAuth授权管理实例 cfg 配置参数

func (*OAuthManager) CheckAccessToken

func (om *OAuthManager) CheckAccessToken(accessToken string) (token *Token, err error)

CheckAccessToken 检查访问令牌是否可用,同时返回该令牌的相关信息 accessToken 访问令牌

func (*OAuthManager) GenerateToken added in v1.1.0

func (om *OAuthManager) GenerateToken(cli Client, userID, scopes string, atExpireIn, rtExpireIn int64, isGenerateRefresh bool) (token *Token, err error)

GenerateToken 生成令牌 cli 客户端信息 userID 用户标识 scopes 应用授权标识 isGenerateRefresh 是否生成更新令牌

func (*OAuthManager) GetACManager

func (om *OAuthManager) GetACManager() *ACManager

GetACManager 获取授权码模式管理实例

func (*OAuthManager) GetCCManager

func (om *OAuthManager) GetCCManager() *CCManager

GetCCManager 获取客户端模式管理实例

func (*OAuthManager) GetClient

func (om *OAuthManager) GetClient(clientID string) (cli Client, err error)

GetClient 根据客户端标识获取客户端信息 clientID 客户端标识

func (*OAuthManager) GetImplicitManager

func (om *OAuthManager) GetImplicitManager() *ImplicitManager

GetImplicitManager 获取简化模式管理实例

func (*OAuthManager) GetPasswordManager

func (om *OAuthManager) GetPasswordManager() *PasswordManager

GetPasswordManager 获取密码模式管理实例

func (*OAuthManager) RefreshAccessToken

func (om *OAuthManager) RefreshAccessToken(refreshToken, scopes string) (token *Token, err error)

RefreshAccessToken 更新访问令牌(在更新令牌有效期内,更新访问令牌的有效期),同时返回更新后的令牌信息 refreshToken 更新令牌 scopes 申请的权限范围(不可以超出上一次申请的范围,如果省略该参数,则表示与上一次一致)

func (*OAuthManager) RevokeAccessToken

func (om *OAuthManager) RevokeAccessToken(accessToken string) (err error)

RevokeAccessToken 废除访问令牌(将该访问令牌的状态更改为删除) accessToken 访问令牌

func (*OAuthManager) SetACGenerate

func (om *OAuthManager) SetACGenerate(generate ACGenerate)

SetACGenerate 设置授权码生成接口

func (*OAuthManager) SetACStore

func (om *OAuthManager) SetACStore(store ACStore)

SetACStore 设置授权码存储接口

func (*OAuthManager) SetClientStore added in v1.2.0

func (om *OAuthManager) SetClientStore(store ClientStore)

SetClientStore 设置客户端存储接口

func (*OAuthManager) SetConfig added in v1.2.0

func (om *OAuthManager) SetConfig(cfg *OAuthConfig)

SetConfig 设置授权码生成接口

func (*OAuthManager) SetTokenGenerate added in v1.2.0

func (om *OAuthManager) SetTokenGenerate(generate TokenGenerate)

SetTokenGenerate 设置令牌生成接口

func (*OAuthManager) SetTokenStore added in v1.2.0

func (om *OAuthManager) SetTokenStore(store TokenStore)

SetTokenStore 设置令牌存储接口

func (*OAuthManager) ValidateClient

func (om *OAuthManager) ValidateClient(clientID, redirectURI string) (cli Client, err error)

ValidateClient 验证客户端的重定向URI clientID 客户端标识 redirectURI 重定向URI

type PasswordConfig

type PasswordConfig struct {
	ATExpiresIn int64 // 访问令牌有效期(单位秒)
	RTExpiresIn int64 // 更新令牌有效期(单位秒)
}

PasswordConfig 密码模式配置参数

type PasswordManager

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

PasswordManager 密码模式管理

func NewPasswordManager

func NewPasswordManager(oaManager *OAuthManager, config *PasswordConfig) *PasswordManager

NewPasswordManager 创建默认的密码模式管理实例 oaManager OAuth授权管理 config 配置参数(nil则使用默认值)

func (*PasswordManager) GenerateToken

func (pm *PasswordManager) GenerateToken(clientID, userID, clientSecret, scopes string, isGenerateRefresh bool) (token *Token, err error)

GenerateToken 生成令牌(只生成访问令牌) clientID 客户端标识 userID 用户标识 clientSecret 客户端秘钥 scopes 应用授权标识

type RedisConfig added in v1.2.0

type RedisConfig struct {
	// The network type, either tcp or unix.
	// Default is tcp.
	Network string
	// host:port address.
	Addr string

	// An optional password. Must match the password specified in the
	// requirepass server configuration option.
	Password string
	// A database to be selected after connecting to server.
	DB int64

	// The maximum number of retries before giving up.
	// Default is to not retry failed commands.
	MaxRetries int

	// Sets the deadline for establishing new connections. If reached,
	// dial will fail with a timeout.
	// Default is 5 seconds.
	DialTimeout time.Duration
	// Sets the deadline for socket reads. If reached, commands will
	// fail with a timeout instead of blocking.
	ReadTimeout time.Duration
	// Sets the deadline for socket writes. If reached, commands will
	// fail with a timeout instead of blocking.
	WriteTimeout time.Duration

	// The maximum number of socket connections.
	// Default is 10 connections.
	PoolSize int
	// Specifies amount of time client waits for connection if all
	// connections are busy before returning an error.
	// Default is 1 second.
	PoolTimeout time.Duration
}

RedisConfig Redis的配置参数

type STATUS

type STATUS byte

STATUS 提供一些状态标识

const (
	// Deleted 删除状态
	Deleted STATUS = iota
	// Actived 激活状态
	Actived
	// Blocked 冻结状态
	Blocked
	// Expired 过期状态
	Expired
)

type Token

type Token struct {
	ID           int64         `bson:"_id"`          // 唯一标识(自增ID)
	ClientID     string        `bson:"ClientID"`     // 客户端标识
	UserID       string        `bson:"UserID"`       // 用户标识
	AccessToken  string        `bson:"AccessToken"`  // 访问令牌
	ATID         string        `bson:"ATID"`         // 访问令牌标识(uuid)
	ATCreateAt   int64         `bson:"ATCreateAt"`   // 访问令牌创建时间(时间戳)
	ATExpiresIn  time.Duration `bson:"ATExpiresIn"`  // 访问令牌有效期(单位秒)
	RefreshToken string        `bson:"RefreshToken"` // 更新令牌
	RTID         string        `bson:"RTID"`         // 更新令牌标识(uuid)
	RTCreateAt   int64         `bson:"RTCreateAt"`   // 更新令牌创建时间(时间戳)
	RTExpiresIn  time.Duration `bson:"RTExpiresIn"`  // 更新令牌有效期(单位秒)
	Scope        string        `bson:"Scope"`        // 申请的权限范围
	CreateAt     int64         `bson:"CreateAt"`     // 创建时间(时间戳)
	Status       STATUS        `bson:"Status"`       // 令牌状态
}

Token 令牌信息

type TokenBasicInfo

type TokenBasicInfo struct {
	Client   Client // 客户端信息
	UserID   string // 用户标识
	TokenID  string // 令牌标识
	CreateAt int64  // 创建令牌的时间戳
}

TokenBasicInfo 用于生成令牌的基础信息

func NewTokenBasicInfo

func NewTokenBasicInfo(cli Client, tokenID, userID string, createAt int64) *TokenBasicInfo

NewTokenBasicInfo 创建用于生成令牌的基础信息 cli 客户端信息 userID 用户标识 createAt 创建令牌的时间戳

type TokenGenerate

type TokenGenerate interface {
	// AccessToken 生成访问令牌
	AccessToken(basicInfo *TokenBasicInfo) (string, error)

	// RefreshToken 生成刷新令牌
	RefreshToken(basicInfo *TokenBasicInfo) (string, error)
}

TokenGenerate 令牌生成接口

func NewDefaultTokenGenerate

func NewDefaultTokenGenerate() TokenGenerate

NewDefaultTokenGenerate 创建默认的访问令牌生成方式

type TokenGenerateDefault

type TokenGenerateDefault struct{}

TokenGenerateDefault 提供访问令牌、更新令牌的默认生成函数

func (*TokenGenerateDefault) AccessToken

func (tg *TokenGenerateDefault) AccessToken(basicInfo *TokenBasicInfo) (token string, err error)

AccessToken 生成访问令牌(md5) basicInfo 生成访问令牌的基础参数

func (*TokenGenerateDefault) RefreshToken

func (tg *TokenGenerateDefault) RefreshToken(basicInfo *TokenBasicInfo) (string, error)

RefreshToken 生成刷新令牌(sha1) basicInfo 生成刷新令牌的基础参数

type TokenMongoStore

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

TokenMongoStore 基于MongoDB的令牌存储方式

func (*TokenMongoStore) Create

func (tm *TokenMongoStore) Create(item *Token) (id int64, err error)

Create Add item

func (*TokenMongoStore) GetByAccessToken

func (tm *TokenMongoStore) GetByAccessToken(accessToken string) (*Token, error)

GetByAccessToken 根据访问令牌获取令牌信息

func (*TokenMongoStore) GetByRefreshToken

func (tm *TokenMongoStore) GetByRefreshToken(refreshToken string) (*Token, error)

GetByRefreshToken 根据更新令牌获取令牌信息

func (*TokenMongoStore) Update

func (tm *TokenMongoStore) Update(id int64, info map[string]interface{}) (err error)

Update Modify item

type TokenStore

type TokenStore interface {
	// Create 创建新的令牌,返回令牌ID
	// 如果创建发生异常,则返回错误
	Create(item *Token) (int64, error)

	// Update 根据ID更新令牌信息
	// id 令牌ID
	// info 需要更新的字段信息(字段名称与结构体的字段名保持一致)
	// 如果更新发生异常,则返回错误
	Update(id int64, info map[string]interface{}) error

	// GetByAccessToken 根据访问令牌,获取令牌信息
	// 如果不存则返回nil
	GetByAccessToken(accessToken string) (*Token, error)

	// GetByRefreshToken 根据更新令牌,获取令牌信息
	// 如果不存则返回nil
	GetByRefreshToken(refreshToken string) (*Token, error)
}

TokenStore 令牌存储接口(持久化存储)

func NewTokenMongoStore

func NewTokenMongoStore(mongoConfig *MongoConfig, cName string) (TokenStore, error)

NewTokenMongoStore 创建基于MongoDB的令牌存储方式 mongoConfig MongoDB配置参数 cName 存储令牌的集合名称(默认为AuthToken)

Jump to

Keyboard shortcuts

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