如何检查JWT令牌剩余有效时间golang

Posted

技术标签:

【中文标题】如何检查JWT令牌剩余有效时间golang【英文标题】:How to check for JWT token remaining validity time golang 【发布时间】:2016-12-31 09:19:09 【问题描述】:

我正在使用

设置 JWT 令牌声明的过期时间
claims["exp"] = time.Now().Add(time.Hour * time.Duration(settings.Get().JWTExpiration)).Unix()

其中 settings.Get().JWTExpiration 为我提供了我在应用程序设置文件中所做的设置。

我已经编写了一个函数,理想情况下应该给我令牌有效的剩余时间。

func getTokenRemainingValidity(timestamp interface) int 
    if validity, ok := timestamp.(float64); ok 
        tm := time.Unix(int64(validity), 0)
        remainder := tm.Sub(time.Now())
        if remainder > 0 
            return int(remainder.Seconds() + expireOffset)
        
    
    return expireOffset

然后我像这样调用这个函数:

x := getTokenRemainingValidity(claims["exp"])
fmt.Println(x)
3600

【问题讨论】:

问一下,你为什么不直接使用 golang jwt 包....
expireOffsetremainder.Seconds()
【参考方案1】:
expireOffsettimestamp.(float64)timestampint64
func getTokenRemainingValidity(timestamp interface) int 
    var expireOffset = 3600
    if validity, ok := timestamp.(int64); ok 
        tm := time.Unix(int64(validity), 0)
        remainder := tm.Sub(time.Now())

        if remainder > 0 
            return int(remainder.Seconds() + float64(expireOffset))
        
    
    return expireOffset

expireOffsetexpireOffsetfloat64int

可以查看和测试完整的工作示例here on the Go Playground。

【讨论】:

以上是关于如何检查JWT令牌剩余有效时间golang的主要内容,如果未能解决你的问题,请参考以下文章