Documentation
¶
Index ¶
- Variables
- func CheckToken(token string) (userID string, err error)
- func JWTRefreshTimeout(timeout time.Duration)
- func JWTSecret(f func(string) ([]byte, error))
- func JWTTimeout(timeout time.Duration)
- func ParseToken(token string) (*jwt.Token, error)
- func RefreshToken(token string) (newToken string, err error)
- func Sign(userID string) (token string, err error)
- type Instance
Examples ¶
Constants ¶
This section is empty.
Variables ¶
Functions ¶
func CheckToken ¶
CheckToken accept a jwt token and returns the uid in token with default instance.
func JWTRefreshTimeout ¶
func JWTTimeout ¶
func ParseToken ¶
ParseToken parse a token string with default instance.
func RefreshToken ¶
RefreshToken accepts a valid token and returns a new token with new expire time.
func Sign ¶
Sign returns a signed jwt string with default instance.
Example ¶
auth.JWTTimeout(4 * time.Second) auth.JWTSecret(func(userID string) (secret []byte, err error) { return []byte("hello world"), nil }) auth.JWTRefreshTimeout(5 * time.Second) token, _ := auth.Sign("user") ctx := &box.Ctx{ Request: &restful.Request{ Request: &http.Request{ Header: map[string][]string{ "Authorization": {token}, }, }, }, } u1, err := ctx.IsLogin() if err != nil { panic(err) } fmt.Println(u1) u2, err := auth.CheckToken(token) if err != nil { panic(err) } fmt.Println(u2) time.Sleep(time.Second * 2) newToken, err := auth.RefreshToken(token) if err != nil { panic(err) } _, err = auth.CheckToken(newToken) if err != nil { panic(err) } time.Sleep(time.Second * 3) // token is expired, newToken is still valid _, err = ctx.IsLogin() fmt.Println(err != nil) _, err = auth.CheckToken(token) fmt.Println(err != nil) _, err = auth.CheckToken(newToken) if err != nil { panic(err) } time.Sleep(time.Second) // cant refresh token if refresh timeout is reached _, err = auth.RefreshToken(newToken) fmt.Println(err != nil) ctx2 := &box.Ctx{ Request: &restful.Request{ Request: &http.Request{ Header: map[string][]string{ "Authorization": {"wtf"}, }, }, }, } _, err = ctx2.IsLogin() fmt.Println(err != nil)
Output: user user true true true true
Types ¶
type Instance ¶ added in v0.5.0
type Instance struct { Timeout time.Duration RefreshTimeout time.Duration SecretFunc func(string) ([]byte, error) }
func (*Instance) CheckToken ¶ added in v0.5.0
CheckToken accept a jwt token and returns the uid in token.
func (*Instance) ParseToken ¶ added in v0.5.0
ParseToken parse a token string.
func (*Instance) RefreshToken ¶ added in v0.5.0
RefreshToken accepts a valid token and returns a new token with new expire time.
Click to show internal directories.
Click to hide internal directories.