1 Star 0 Fork 0

kevin186/keyauth

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
app.go 2.17 KB
一键复制 编辑 原始数据 按行查看 历史
kevin 提交于 2023-06-15 18:49 . 完成token颁发与验证接口
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{}
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/kevin186/keyauth.git
git@gitee.com:kevin186/keyauth.git
kevin186
keyauth
keyauth
v0.0.11

搜索帮助

23e8dbc6 1850385 7e0993f3 1850385