Как работать с аутентификацией в Framework7 Vue

Я использую последний стартовый пакет Framework7 Vue Webpack.

Моя страница по умолчанию ('/') - это страница входа. Мой план состоял в том, чтобы запускать запрос xhr, как только запрашивается любая страница в приложении.

  1. Поэтому я попытался поместить вызов isLoggedIn() в onF7Ready(f7). Если бы я вошел в систему, я бы использовал это, чтобы вывести пользователя на главный экран - self.$f7router.navigate('/home/'); иначе я бы перевел пользователя на страницу входа. Затем я узнал, что $f7router доступен только в компонентах маршрута.
  2. Затем я подумал, что поставлю проверку isLoggedIn() на каждую страницу pageInit(). Поэтому я попытался поместить этот код в файл login.vue в on: { pageInit(e) { $f7router доступен здесь, но self.$f7router.navigate('/home/'); не работает. То же самое self.$f7router.navigate('/home/'); однако работает, если я использую его в одном из фиктивных методов в том же файле login.vue.

Даже если приведенный выше код действительно работал, должен быть лучший способ проверить, вошел ли пользователь в систему, а затем сделать что-то гораздо лучше, чем я. Все мои маршруты, кроме ('/'), требуют аутентификации.

Может ли кто-нибудь сказать мне, как я должен подходить к этому очень стандартному вопросу? Большое спасибо.


person Manish Pradhan    schedule 13.02.2018    source источник
comment
Я проверяю запросы ajax, если я получаю 401, это означает, что я должен перенаправить на страницу входа.   -  person Edgard Leal    schedule 26.02.2018


Ответы (1)


Я обнаружил, что self.$f7router.navigate недоступен в pageInit(), однако он доступен в pageBeforeIn() и других функциях, следующих за pageInit().

Примечание: я обнаружил, что pageInit() довольно опасен для этого конкретного варианта использования, потому что каждый раз, когда вы переходите на эту страницу, страница будет запускать запрос AJAX, а не только при первом доступе к приложению.

person Manish Pradhan    schedule 23.05.2018
comment
Документация - настоящая борьба за это. Все, что мне нужно сделать, это битва. - person Joeme; 01.05.2020