@hollanditkzn

Как запретить доступ гостям?

У меня не получается чтобы страницы для авторизованных была закрыта. Моя реалиация в редусере
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
  • Вопрос задан
  • 74 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы