Как проверить, если пользователь вошел в систему, а затем перенаправить? - PullRequest
0 голосов
/ 13 марта 2019

Я перепробовал все ответы, которые смог найти, это мой маршрут:

const loggedIn = !!localStorage.getItem('token');

const Routes = () => (
    <div>
        <Switch>
            <Route exact path="/" render={() => (
                !loggedIn ? (
                    <Redirect to="/login" />

                ) : (
                    <Redirect to="/welcome" />
                )
            )}/>
</Switch>
    </div>
);

export default Routes;

Однако он все еще не работает .. Я получаю сообщение об ошибке в другом контейнере:

menuContainer.js: 10 Uncaught TypeError: Невозможно прочитать свойство 'id' с нулевым значением

constructor(props) {
        super(props);
        this.state = {
            userId: JSON.parse(localStorage.getItem('logged')).id,
            loginRole: localStorage.getItem('loggedRole')
        }
    };

Что я здесь не так делаю?

Спасибо!

РЕДАКТИРОВАТЬ: У меня нет идентификатора, если пользователь не вошел в систему. В этом весь смысл.:) Если пользователь не вошел в систему, он должен перенаправить обратно в /login.

Ответы [ 2 ]

0 голосов
/ 13 марта 2019

Я не уверен, как установить объект localStorage раньше.

var userobj = { id : 12 }

localStorage.setItem('logged',JSON.stringify(userobj))

, а затем попробуйте получить его как JSON.parse(localStorage.getItem('logged')).id; //return 12

Вот как это нужно сделать.Если token, который вы получаете, имеет идентификатор, вы должны вручную установить его, прежде чем получить его:)

0 голосов
/ 13 марта 2019

сначала вам нужно установить элемент в localStorage

localStorage.setItem('name', value )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...