【发布时间】:2020-08-25 09:50:50
【问题描述】:
我正在使用 react-redux 应用程序并尝试将我的身份验证令牌存储在本地存储中。一旦我的登录 api 调用完成,我将 auth-token 放入 localStorage,如下所示:
function loginSuccess(response) {
const { accessToken, refreshToken} = response;
localStorage.setItem('accessToken', accessToken);
localStorage.setItem('refreshToken', refreshToken);
}
当我重新加载网页时,在我的 App.js 中,当我尝试检索 accessToken 和 refreshToken 时,都返回“未定义”。这是为什么呢?
class App extends React.Component {
constructor(props) {
super(props); ;
if (localStorage.getItem('accessToken')) {
authenticationActions.resetHeader();
}
}
【问题讨论】:
-
我要警告你
localStorage是不安全的。在localStorage中放置一个刷新令牌(甚至是访问令牌)是一个非常糟糕的主意。另外,您使用 JWT 标记了问题,所以我假设您也将这些问题保存在 localStorage 中,这也非常危险:medium.com/redteam/… -
我怀疑您的问题是
response对象不包含值accessToken或refreshToken。如果它是一个Response对象(即来自 Fetch API),那么您需要等待response.json()Promise 解析,它将包含数据。 -
我在执行 localstorage.getItem('accessToken') 的地方放了断点,发现等待一段时间后,返回值。看起来它需要一些时间。这是常见的行为吗?
标签: reactjs jwt local-storage