Skip to content

Commit 19d6e4c

Browse files
authored
feat: set timeout dynamically - Add TimeoutFunc (#337)
closes #313
1 parent 2b1dbef commit 19d6e4c

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

auth_jwt.go

+11-3
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ type GinJWTMiddleware struct {
3939

4040
// Duration that a jwt token is valid. Optional, defaults to one hour.
4141
Timeout time.Duration
42+
// Callback function that will override the default timeout duration.
43+
TimeoutFunc func(data interface{}) time.Duration
4244

4345
// This field allows clients to refresh their token until MaxRefresh has passed.
4446
// Note that clients can refresh their token in the last moment of MaxRefresh.
@@ -313,6 +315,12 @@ func (mw *GinJWTMiddleware) MiddlewareInit() error {
313315
mw.Timeout = time.Hour
314316
}
315317

318+
if mw.TimeoutFunc == nil {
319+
mw.TimeoutFunc = func(data interface{}) time.Duration {
320+
return mw.Timeout
321+
}
322+
}
323+
316324
if mw.TimeFunc == nil {
317325
mw.TimeFunc = time.Now
318326
}
@@ -508,7 +516,7 @@ func (mw *GinJWTMiddleware) LoginHandler(c *gin.Context) {
508516
}
509517
}
510518

511-
expire := mw.TimeFunc().Add(mw.Timeout)
519+
expire := mw.TimeFunc().Add(mw.TimeoutFunc(claims))
512520
claims["exp"] = expire.Unix()
513521
claims["orig_iat"] = mw.TimeFunc().Unix()
514522
tokenString, err := mw.signedString(token)
@@ -583,7 +591,7 @@ func (mw *GinJWTMiddleware) RefreshToken(c *gin.Context) (string, time.Time, err
583591
newClaims[key] = claims[key]
584592
}
585593

586-
expire := mw.TimeFunc().Add(mw.Timeout)
594+
expire := mw.TimeFunc().Add(mw.TimeoutFunc(claims))
587595
newClaims["exp"] = expire.Unix()
588596
newClaims["orig_iat"] = mw.TimeFunc().Unix()
589597
tokenString, err := mw.signedString(newToken)
@@ -633,7 +641,7 @@ func (mw *GinJWTMiddleware) TokenGenerator(data interface{}) (string, time.Time,
633641
}
634642
}
635643

636-
expire := mw.TimeFunc().Add(mw.Timeout)
644+
expire := mw.TimeFunc().Add(mw.TimeoutFunc(claims))
637645
claims["exp"] = expire.Unix()
638646
claims["orig_iat"] = mw.TimeFunc().Unix()
639647
tokenString, err := mw.signedString(token)

0 commit comments

Comments
 (0)