代码拉取完成,页面将自动刷新
package token
import (
"fmt"
"gitee.com/kevin186/keyauth/apps/user"
"gitee.com/kevin186/keyauth/common/utils"
"time"
"github.com/infraboard/mcube/exception"
)
const (
AppName = "token"
)
func NewIssueTokenRequest() *IssueTokenRequest {
return &IssueTokenRequest{
UserDomain: user.DefaultDomain,
}
}
func (req *IssueTokenRequest) Validate() error {
switch req.GranteType {
case GranteType_PASSWORD:
if req.UserName == "" || req.Password == "" {
return fmt.Errorf("password grant required username and password")
}
}
return nil
}
func NewDefaultToken() *Token {
return &Token{
Data: &IssueTokenRequest{},
Meta: map[string]string{},
}
}
func NewToken(req *IssueTokenRequest, expiredDuration time.Duration) *Token {
now := time.Now()
// Token 10
expired := now.Add(expiredDuration)
refresh := now.Add(expiredDuration * 5)
return &Token{
AccessToken: utils.MakeBearer(24),
IssueAt: now.UnixMilli(),
Data: req,
AccessTokenExpiredAt: expired.UnixMilli(),
RefreshToken: utils.MakeBearer(32),
RefreshTokenExpiredAt: refresh.UnixMilli(),
}
}
func (t *Token) Validate() error {
// 判断Token过期没有
// 是一个时间戳,
// now expire
if time.Now().UnixMilli() > t.AccessTokenExpiredAt {
return exception.NewAccessTokenExpired("access token expired")
}
return nil
}
func (t *Token) IsRefreshTokenExpired() bool {
// 判断refresh Token过期没有
// 是一个时间戳,
// now expire
if time.Now().UnixMilli() > t.RefreshTokenExpiredAt {
return true
}
return false
}
// 续约Token, 延长一个生命周期
func (t *Token) Extend(expiredDuration time.Duration) {
now := time.Now()
// Token 10
expired := now.Add(expiredDuration)
refresh := now.Add(expiredDuration * 5)
t.AccessTokenExpiredAt = expired.UnixMilli()
t.RefreshTokenExpiredAt = refresh.UnixMilli()
}
func NewDescribeTokenRequest(at string) *DescribeTokenRequest {
return &DescribeTokenRequest{
AccessToken: at,
}
}
func NewValidateTokenRequest(at string) *ValidateTokenRequest {
return &ValidateTokenRequest{
AccessToken: at,
}
}
func NewRevolkTokenRequest() *RevolkTokenRequest {
return &RevolkTokenRequest{}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。