如何从前端正确调用刷新令牌API

时间:2019-07-24 05:57:04

标签: javascript vue.js axios refresh-token

当前,当我调用API时,我正在检查响应代码是否为401,因此我正在调用刷新令牌API以获取新令牌。

在调用刷新令牌API时,如果我收到200响应,我就想起了初始API以获取响应。

这是正确的方法吗?我还有一个担心,如果出了问题,可以一遍又一遍地调用loaduserinfo方法,从而变成一个无限循环。我该如何避免这种情况。

loaduserinfo() {

     axios.get(port + '/api/user/me', {
                headers: {
                    Authorization: AuthorizationHead + localStorage.getItem('TOKEN_KEY')
                }
      }).then((response) => {

           this.currentuserinfo = '';
           this.currentuserinfo = response.data;

            }).catch((error) => {

                if (error.response.data.status == 401) {
                    this.getnewjwttoken()
                        .then(response => {
                            if (response == 200) {
                                this.loaduserinfo();
                            }
                  })
                }
                else if (error.response.data.status == 500) {
                    console.log('500 Error');
                }
                else {
                   console.log(error.response.data.message);
                }

            })

        }




getnewjwttoken() {

    return new Promise((resolve, reject) => {

    var payload = {
                    "refreshToken": localStorage.getItem('REFRESH_TOKEN')
                };

    axios.post(port + '/api/auth/refresh-token', payload, {
                }).then((response) => {
                    localStorage.setItem("TOKEN_KEY", response.data.accessToken);
                    resolve(200);
                }).catch((error) => {
                    alert("Session has Expired Please Login Again");
                    this.logout();
                })

            })
}

0 个答案:

没有答案