代码拉取完成,页面将自动刷新
package token
import (
"fmt"
"time"
"github.com/rs/xid"
)
func NewToken() *Token {
return &Token{
AccessToken: xid.New().String(),
RefreshToken: xid.New().String(),
// 默认10分钟过期
AccessTokenExpiredSecond: 10 * 60,
// 默认40分钟
RefreshTokenExpiredSecond: 10 * 60 * 4,
IssueAt: time.Now().Unix(),
}
}
// 判断ak是否过期
func (t *Token) IsAcccessTokenExpired() bool {
d := time.Since(t.AcccessTokenExpiredTime())
return d.Minutes() > 0
}
func (t *Token) AcccessTokenExpiredTime() time.Time {
return t.IssueTime().Add(time.Duration(t.AccessTokenExpiredSecond * int64(time.Second)))
}
func (t *Token) IssueTime() time.Time {
return time.Unix(t.IssueAt, 0)
}
// 用户对 服务(cmdb), 那个资源(secret)的 那个操作是否有权限(list)
func (t *Token) HasPerm(servce, secret, action string) error {
if t.Roles == nil && len(t.Roles.Items) > 0 {
return nil
}
// 每个角色挨着判断
for i := range t.Roles.Items {
r := t.Roles.Items[i]
if r.HasPerm(servce, secret, action) {
return nil
}
}
return fmt.Errorf("无权限")
}
// 判断ak是否过期
func (t *Token) IsRefreshTokenExpired() bool {
d := time.Since(t.RefreshTokenExpiredTime())
return d.Minutes() > 0
}
func (t *Token) RefreshTokenExpiredTime() time.Time {
return t.IssueTime().Add(time.Duration(t.RefreshTokenExpiredSecond * int64(time.Second)))
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。