【发布时间】:2020-06-30 14:15:47
【问题描述】:
如标题所示 - 当我在 React/Redux 应用程序中重新加载页面时,用户正在注销。我将令牌存储在 localStorage 中,但它不起作用,因此可能有任何错误。用户登录时应存储令牌。注销工作正常。这是我的代码:
auth.js(reducers 目录 - Redux):
import { LOGIN_SUCCESS, LOGIN_FAIL, LOGOUT_SUCCESS, REGISTER_SUCCESS, REGISTER_FAIL } from '../actions/types';
const initialState = {
token: localStorage.getItem('token'),
isAuthenticated: null,
isLoading: false,
isRegistered: false
}
export default function(state = initialState, action) {
switch(action.type) {
case REGISTER_SUCCESS:
return {
...state,
...action.payload,
token: null,
isAuthenticated: false,
isLoading: false,
isRegistered: true
}
case LOGIN_SUCCESS:
localStorage.setItem('token', action.payload.token);
return {
...state,
...action.payload,
isAuthenticated: true,
isLoading: false,
}
case LOGIN_FAIL:
case LOGOUT_SUCCESS:
case REGISTER_FAIL:
localStorage.removeItem('token');
return {
...state,
token: null,
isAuthenticated: false,
isLoading: false
}
default:
return state;
}
}
【问题讨论】:
-
您也应该在使用 reducers 操作时共享,也许您的持久性代码无法正常工作。或者,您可能对某个操作做出了错误的调用。
标签: javascript reactjs authentication redux