37 lines
684 B
Go
37 lines
684 B
Go
|
package token
|
||
|
|
||
|
import (
|
||
|
"net/url"
|
||
|
"time"
|
||
|
|
||
|
"github.com/golang-jwt/jwt/v4"
|
||
|
)
|
||
|
|
||
|
var _ Token = (*token)(nil)
|
||
|
|
||
|
type Token interface {
|
||
|
// i 为了避免被其他包实现
|
||
|
i()
|
||
|
|
||
|
// JwtSign JWT 签名方式
|
||
|
JwtSign(userId, subject string, expireDuration time.Duration) (tokenString string, err error)
|
||
|
JwtParse(tokenString string) (*jwt.RegisteredClaims, error)
|
||
|
|
||
|
// UrlSign URL 签名方式,不支持解密
|
||
|
UrlSign(path string, method string, params url.Values) (tokenString string, err error)
|
||
|
}
|
||
|
|
||
|
type token struct {
|
||
|
secret string
|
||
|
domain []string
|
||
|
}
|
||
|
|
||
|
func New(secret string, domain ...string) Token {
|
||
|
return &token{
|
||
|
secret: secret,
|
||
|
domain: domain,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (t *token) i() {}
|