Я пытаюсь выяснить структуру моей аутентификации по токену jwt с помощью response / redux. Теперь, как я его настроил, я использую промежуточное программное обеспечение, которое сохраняет токен в локальном хранилище, когда отправляется действие ATTEMPT_LOGIN_SUCCESS (Примечание: безопасность локального хранилища не имеет значения).
Для начального состояния, вошел ли пользователь в систему, я в настоящее время получаю токен из локального хранилища и проверяю его внутри моего редуктора входа в систему. Мой вопрос заключается в том, является ли это место, куда я действительно должен поместить это logi c.
промежуточное ПО jwt-handler для сохранения токена:
import {ATTEMPT_LOGIN_SUCCESS} from "./dataTypes/login"
const jwtHandler = store => next => action => {
switch(action.type){
case ATTEMPT_LOGIN_SUCCESS:
const token = action.payload;
localStorage.setItem("token", token);
}
return next(action);
}
export default jwtHandler;
Редуктор входа в систему (код в вопросе находится сверху вниз к исходному состоянию):
import {
ATTEMPT_LOGIN_BEGIN, ATTEMPT_LOGIN_FAIL, ATTEMPT_LOGIN_SUCCESS
} from "../dataTypes/login";
import authenticateToken from "./authenticateToken";
const token = localStorage.getItem("token");
const isValid = authenticateToken(token); //Decodes and checks date to ensure valid
if(!isValid){
localStorage.setItem("token", "");
}
const initialState = {
loading:false,
errorMessage: "",
success:false,
isLoggedIn: isValid
};
const loginReducer = (state = initialState, action) => {
switch (action.type) {
case ATTEMPT_LOGIN_BEGIN:
return {
...state,
loading:true,
errorMessage:""
};
case ATTEMPT_LOGIN_SUCCESS:
return {
...state,
loading:false,
success:true,
token:action.payload
};
case ATTEMPT_LOGIN_FAIL:
return {
...state,
loading:false,
errorMessage:action.payload
};
default:
return state;
}
};
export default loginReducer;
Я чувствую, что может быть лучшее место, чтобы поставить мой, зарегистрирован в логи c, но я еще не нашел хорошего ответа в Интернете.