Вы должны просто обработать ваше состояние аутентификации в вашем интерфейсе реакции.Даже если вы выполняете аутентификацию на стороне сервера, лучше просто сохранить состояние аутентификации в вашем интерфейсе React с Redux.В вашем приложении «Реакция»:
Вам также понадобится использовать библиотеку «Реакция-редукс», чтобы соединить реакцию с редуксом
Действия
export const login_success = () => {
return {
type: ACTION_TYPES.LOGIN_SUCCESS
}
}
export const login_failure = () => {
return {
type: ACTION_TYPES.LOGIN_FAILURE
}
}
Редуктор:
const initialState = {
isAuthenticated: false,
}
const AuthReducer = (state= initialState, action) => {
switch(action.type) {
case ACTION_TYPES.LOGIN_SUCCESS:
return {
...state,
isAuthenticated: true
}
case ACTION_TYPES.LOGIN_FAILURE:
return {
...state,
isAuthenticated: false
}
}
Доступ к состоянию авторизации с помощью props
{this.props.isAuthenticated
? <h3> user is logged in </h3>
: <h3> user is not logged in </h3>
}
function mapStateToProps(state) {
return {
isAuthenticated: state.auth_reducer.isAuthenticated
}
}
Реализация этого в компоненте обратного вызова, который отображается после входа пользователя.
function mapDispatchToProps(dispatch) {
return {
action1: () => dispatch(ACTIONS.LOGIN_SUCCESS),
}
}
Если вы хотите полностью работающий примеро том, как это сделать, вы можете проверить этот проект, который я построил, это экспресс-приложение с полным стеком и аутентификацией
https://github.com/iqbal125/react-redux-fullstack-blog
Чтобы дать вам немного любви,мне кажется, вы не полностью понимаете Redux, я бы предложил освоить Redux, прежде чем пытаться создать сложное приложение с полным стеком, просто предложение.
Редактировать:
Связь с сервером может осуществляться через прокси-сервер, поэтому в вашем файле package.json вы можете сделать следующее:
"proxy": http://localhost:5000"
или где угодносервер узла работает.Вы также можете просто отправить ответ сервера на ваш интерфейс React, что угодно, а затем обновить ваш интерфейс React-Redux на основе этого ответа сервера.
Итак, на вашем экспресс-сервере
router.get('api/login', (req, res) => {
if(res.login === true) {
res.json(success_login: true)
}
})
, а затем на вашем реагирующем интерфейсе
axios.get('/api/login')
.then(res => this.props.login_success(res.data) )
login_success(res) {
if(res.success_login === true) {
type: "SUCCESS_LOGIN"
}
Таким образом, по сути вы не будете обрабатывать состояние маршрутизации или избыточной аутентификации на вашем экспресс-сервере.,Ваш сервер отправит ответ на ваш реагирующий веб-интерфейс, а затем состояние маршрутизации и избыточной аутентификации будет обрабатываться вашим веб-интерфейсом.