关于将 `access_token_expired_at `设置为 0 不刷新 `token`的问题?

    let accessToken = wepy.getStorageSync('access_token')
    // let accessToken = await getToken()

    // Token 存在则说明已登录
    if (accessToken) {
        // 测试 authRequest 接口
        let userResponse = await api.authRequest('user')

        this.userInfo = userResponse.data
        this.loggedIn = true
        this.$apply()
    }

access_token_expired_at设置为0之后,不会发起 refreshToken 的请求啊?

onShow() 进来拿到本地的access_token,但是这个 token已经过期了,onShow()就走完了啊。为什么会出现如作者,重新刷新refreshToken的请求啊。甚是不解。

感觉对着代码敲,都少敲了几个字母,然而已经对了好几遍了。没有发现不对经的地方。可以看到当 JWT 过期后,先调用刷新接口获取新的 Token 之后再请求 获取登录用户信息 接口。这里可以再讲解一下逻辑吗?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

@liyu001989 找到问题了。敲代码的时候在 getToken 方法中,把 let refreshResponse = await refreshToken(accessToken) 写成了 let refreshToken = await refreshToken(accessToken)!!!您提醒了我,第一时间应该看JS报错信息的,而不是去对代码对不对。

5年前 评论
讨论数量: 3
liyu001989

file

authRequest 会先调用 getToken,然后就是检测token是否过期,过期了调用 refreshToken 。

你可以在 getToken 和 refreshToken 方法中增加一些日志 console.log 看看执行流程

5年前 评论

@liyu001989 嗯,刚才又重新走了一遍代码,发现是在authRequest中调用的getToken,我试一试console.log调试一下

5年前 评论

@liyu001989 找到问题了。敲代码的时候在 getToken 方法中,把 let refreshResponse = await refreshToken(accessToken) 写成了 let refreshToken = await refreshToken(accessToken)!!!您提醒了我,第一时间应该看JS报错信息的,而不是去对代码对不对。

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!