微信h5循环登录的一个bug记录

最终定位到这个问题是因为java8 LocalDateTime序列化为字符串导致的,以前是序列化为毫秒数
新的token

{
    "expireTime":"2019-03-08T21:58:38.798",
    "token":"4a7f8559be107489d4e97cd02f9daef2",
    "updateTime":"2019-03-08T20:58:38.798",
    "userId":"da5f0e42e3a3ccb8575a44537fd9526e"
}

老的token

{
    "expireTime":1552053732736,
    "token":"5a4af07719da3e680b9817bdcd0a3c5f",
    "updateTime":1552050132736,
    "userId":"da5f0e42e3a3ccb8575a44537fd9526e"
}

然后为什么老的是序列化为数字呢?
没有找到fastjson直接把LocalDateTime变为Long的方法
所以只能再加一个VO了


data class TokenVO(
        val userId: String,
        val token: String,
        val expireTime: Long,
        val updateTime: Long
) {
    companion object {
        fun fromToken(token: Token) : TokenVO {
            val expireTime = token.expireTime.toMs()
            val updateTime = token.updateTime.toMs()
            return TokenVO(
                    userId = token.userId,
                    token = token.token,
                    expireTime = expireTime,
                    updateTime = updateTime
            )
        }
    }
}
fun LocalDateTime.toMs(): Long {
    return this.toInstant(ZoneOffset.of("+8")).toEpochMilli()
}

你可能感兴趣的:(编程错误)