向每个axios请求添加授权标头

时间:2019-06-20 16:45:25

标签: react-redux axios

我正在使用redux-oidc进行授权,该授权将用户访问令牌保存在商店中。 我已经读过this post关于同一问题的信息,但对我来说不起作用。

到目前为止,我已经尝试过两种不同的方法。首先,我尝试将以下内容添加到我的App.js文件中(因为它是项目的根目录)

if (store.getState().oidc.user && store.getState().oidc.user.access_token) {
token = store.getState().oidc.user.access_token;
setJWTToken(token);
}

其中setJWTToken是一个函数:

const setJWTToken = token => {
if (token) {
    axios.defaults.headers.common["Authorization"] = token
} else {
    delete axios.defaults.headers.common["Authorization"];
}
};

,但是它被忽略了,这是因为用户在初始应用程序加载期间没有加载。因此,我随后将其移至动作文件,以为此时需要授权用户

axios.defaults.headers.common["Authorization"] = 
store.getState().oidc.user.access_token;

但是我收到一个错误TypeError: Cannot read property 'access_token' of null

使用Chrome中的redux和react开发工具,我可以看到令牌已在商店中-我认为何时调用它只是个问题。如果这是一个组件,我会做类似(!user){return Loading ... 但我不想在每个页面上都这样做。我要去哪里错了?

0 个答案:

没有答案