gitee.com/h79/goutils@v1.22.10/auth/jwt/auth.go (about)

     1  package jwt
     2  
     3  import (
     4  	"gitee.com/h79/goutils/auth/token"
     5  )
     6  
     7  // 保证 Authenticate struct implement token.Authenticate
     8  var _ token.Authenticate = (*Authenticate)(nil)
     9  
    10  const Type = "jwt"
    11  
    12  type Authenticate struct {
    13  	method  string
    14  	secret  token.Secret
    15  	factory token.Factory
    16  }
    17  
    18  func New(secret token.Secret) *Authenticate {
    19  	return NewWith(secret, Type, &defJWTFactory)
    20  }
    21  
    22  func NewWith(secret token.Secret, method string, factory token.Factory) *Authenticate {
    23  	if factory == nil {
    24  		factory = &defJWTFactory
    25  	}
    26  	return &Authenticate{method: method, secret: secret, factory: factory}
    27  }
    28  
    29  func (t *Authenticate) Type() string {
    30  	return t.method
    31  }
    32  
    33  // Create implement token.Authenticate interface
    34  func (t *Authenticate) Create(secretKey string, expireSeconds int64, opts ...token.Option) (token.Token, error) {
    35  	sec := t.secret.GetSecret(secretKey)
    36  	if expireSeconds > 0 {
    37  		sec.Expire = expireSeconds
    38  	}
    39  	return t.factory.Create(&sec, opts...)
    40  }
    41  
    42  // Decode implement token.Authenticate interface
    43  func (t *Authenticate) Decode(tok string, opts ...token.Option) (token.Token, error) {
    44  	return t.factory.Decode(tok, opts...)
    45  }
    46  
    47  // Check implement token.Authenticate interface
    48  func (t *Authenticate) Check(secretKey string, tok string, opts ...token.Option) (token.Token, error) {
    49  	sec := t.secret.GetSecret(secretKey)
    50  	return t.factory.Check(tok, &sec, opts...)
    51  }
    52  
    53  // SetEnabled implement token.Authenticate interface
    54  func (t *Authenticate) SetEnabled(secretKey string, enable bool) {
    55  	t.secret.SetEnabled(secretKey, enable)
    56  }
    57  
    58  // EnableFlag implement token.Authenticate interface
    59  func (t *Authenticate) EnableFlag(secretKey string) int {
    60  	return t.secret.EnableFlag(secretKey)
    61  }