在index.js中的拦截器中使用Router

时间:2019-01-16 22:52:02

标签: javascript reactjs axios

我将这段代码放在index.js文件中。

这里的情况是,当错误代码为403时,我想要它,因此删除了用户令牌,然后自动呈现了登录组件。

问题在于index.js无权访问this.props.history,因此无法使用它,重定向到登录页面的另一种方法是什么?

axios.interceptors.response.use(res => {
    console.log(res);
    return res;
}, err => {
    console.log(err.response);
    if (err.response.status === 403) {
        AuthHelper.removeUserToken();
        // Go back to login page by this.props.history.push('/login');
    }
    return Promise.reject(err);
})

1 个答案:

答案 0 :(得分:0)

我看到一种对您有用的方法。

在收到403时,请在redux存储中设置一个标志(不确定是否正在使用它),否则,您需要将其设置在所有组件都可以访问的位置。

现在在所有组件中您都可以说

{token ? null:<Redirect to="/login" />}

现在,只要在axios中收到403,它就会重定向到登录页面。