我正在使用jwt-core库(“com.pauldijou”%%“jwt-core”%“0.11.0”)。我有一个JWT令牌,我想从令牌中读取到期日期。
我查看了他们在github网站上的示例,他们有一些角度和游戏框架示例。
https://github.com/pauldijou/jwt-scala/tree/master/examples
我只想要简单的scala代码。没有涉及UI框架。你能指点我帮我从jwt令牌中提取到期时间戳的样本吗?
答案 0 :(得分:1)
JWT只不过是void main()
编码并签名{{1}}。
我无法帮助您从JWT中提取到期日期,但我可以帮助您完成从获取 到期日期的步骤 a JWT。
以下是示例令牌:
base64
您可以通过复制示例并使用代码string
JWT的第二部分是您的有效负载,其中有效期最有可能存在。您需要检查提供者端的有效负载定义,并了解其属性。
现在,对于Scala部分:
首先,让JWT格式化为JSON - JWT:JSON Web Token - 您需要选择JSON序列化器/解串器库。对于此示例,我使用的是eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImV4cCI6MTIzNDIzNDIzNH0.ADaAdqIjKzQ4uPlavizyGyng2Vq1yQqYjcZ-EeqN8Do
。
secret
结果:
1234234234
使用的喷涂库是:spray-json
答案 1 :(得分:0)
感谢您的回答。使用scala-jwt库也很容易。
import pdi.jwt._
import scala.util.{Failure, Success}
import io.circe.generic.auto._
import io.circe.parser._
val expTimeOpt = Jwt.decode(token, JwtOptions(signature = false, expiration = true, notBefore = false, leeway = 0)) match {
case Success(s) => decode[JwtExpiration](s).fold[Option[JwtExpiration]](_ => Option.empty[JwtToken], Some(_))
case Failure(f) => Option.empty[JwtExpiration]
}
case class JwtExpiration(exp: Long)