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 }