我正在使用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 ... 但我不想在每个页面上都这样做。我要去哪里错了?