Skip to content
Merged

fix: #1242

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion server/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jwt:
zap:
level: info
format: console
prefix: [github.com/flipped-aurora/gin-vue-admin/server]
prefix: "[github.com/flipped-aurora/gin-vue-admin/server]"
director: log
show-line: true
encode-level: LowercaseColorLevelEncoder
Expand Down
14 changes: 10 additions & 4 deletions server/utils/human_duration.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,21 @@ import (
)

func ParseDuration(d string) (time.Duration, error) {
d = strings.TrimSpace(d)
dr, err := time.ParseDuration(d)
if err == nil {
return dr, nil
}
if strings.HasSuffix(d, "d") {
h := strings.TrimSuffix(d, "d")
hour, _ := strconv.Atoi(h)
if strings.Contains(d, "d") {
index := strings.Index(d, "d")

hour, _ := strconv.Atoi(d[:index])
dr = time.Hour * 24 * time.Duration(hour)
return dr, nil
ndr, err := time.ParseDuration(d[index+1:])
if err != nil {
return dr, nil
}
return dr + ndr, nil
}

dv, err := strconv.ParseInt(d, 10, 64)
Expand Down
49 changes: 49 additions & 0 deletions server/utils/human_duration_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package utils

import (
"testing"
"time"
)

func TestParseDuration(t *testing.T) {
type args struct {
d string
}
tests := []struct {
name string
args args
want time.Duration
wantErr bool
}{
{
name: "5h20m",
args: args{"5h20m"},
want: time.Hour*5 + 20*time.Minute,
wantErr: false,
},
{
name: "1d5h20m",
args: args{"1d5h20m"},
want: 24*time.Hour + time.Hour*5 + 20*time.Minute,
wantErr: false,
},
{
name: "1d",
args: args{"1d"},
want: 24 * time.Hour,
wantErr: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := ParseDuration(tt.args.d)
if (err != nil) != tt.wantErr {
t.Errorf("ParseDuration() error = %v, wantErr %v", err, tt.wantErr)
return
}
if got != tt.want {
t.Errorf("ParseDuration() got = %v, want %v", got, tt.want)
}
})
}
}
2 changes: 1 addition & 1 deletion server/utils/jwt.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ func (j *JWT) CreateClaims(baseClaims request.BaseClaims) request.CustomClaims {
ep, _ := ParseDuration(global.GVA_CONFIG.JWT.ExpiresTime)
claims := request.CustomClaims{
BaseClaims: baseClaims,
BufferTime: int64(bf), // 缓冲时间1天 缓冲时间内会获得新的token刷新令牌 此时一个用户会存在两个有效令牌 但是前端只留一个 另一个会丢失
BufferTime: int64(bf / time.Second), // 缓冲时间1天 缓冲时间内会获得新的token刷新令牌 此时一个用户会存在两个有效令牌 但是前端只留一个 另一个会丢失
StandardClaims: jwt.StandardClaims{
NotBefore: time.Now().Unix() - 1000, // 签名生效时间
ExpiresAt: time.Now().Add(ep).Unix(), // 过期时间 7天 配置文件
Expand Down