У меня не получается чтобы страницы для авторизованных была закрыта. Моя реалиация в редусере
export default (state = initialState, action) => {
const { type, payload } = action;
switch(type){
case LOGIN_REQUEST:
return {
...state,
isLoading: true,
isError: false
};
case LOGIN_SUCCESS:
sessionStorage.setItem('auth', JSON.stringify(payload));
return {
...state,
user: payload,
isLoading: false,
shouldRedirect: true
};
case LOGIN_ERROR:
return {
...state,
errorMessage: payload,
isLoading: false,
isError: true,
};
default:
return state;
}
}
Здесь я поместил данные при авторизации в sessionStorage. И дальше в index.js
import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import { Route, Switch, Redirect } from 'react-router';
import { createStore, combineReducers, compose, applyMiddleware } from 'redux';
import { BrowserRouter } from 'react-router-dom';
import thunk from 'redux-thunk';
import Helmet from './aplication';
import loginReducers from './reducer/loginDucks';
import Home from "./Home";
import Auth from "./AuthForm";
const rootReducer = combineReducers({
login: loginReducers,
});
const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
const store = createStore(rootReducer, composeEnhancers(
applyMiddleware(thunk)
));
ReactDOM.render(
<div>
<Helmet title='Авторизация'/>
<Provider store={store}>
<BrowserRouter>
<Switch>
<Route exact path='/' component={Auth}/>
<Route path='/index' render={() => sessionStorage.getItem('auth') ? <Home /> : <Redirect to='/'/>}/>
</Switch>
</BrowserRouter>
</Provider>
</div>,
document.getElementById('content')
);
Но у меня почему-то не делается редирект всегда происходит на страницу "/" ну на даном примере что если я очистил sessionStorage