StivinKing
@StivinKing

Как правильно при инициализации приложения проверить авторизацию (Angular2)?

Доброго времени суток,

Во время инициализации приложения, делаю запрос на backend, для получения меню навигации (разная в зависимости от роли)

providers: [
    provide: APP_INITIALIZER,
    useFactory: (service: GlobalService) => () => service.init(),
    deps: [GlobalService], multi: true,
]

init(): Promise<any> {
        var promise = this.http.get('/api/menu_navigation').map(res => res.json()).toPromise();
        promise.then(data => this.menuNavigation = data.menu_navigation);
        return promise;
    }


Всё хорошо, но вот если пользователь не авторизован, backend его не пускает (302). Тут либо добавить методу декоратор, чтобы пропускал не авторизованных, но это лишние пустые запросы. Либо сделать правильно и на этапе инициализации приложения проверять авторизован ли пользователь. Если нет, то просто перекинуть на /login ?
  • Вопрос задан
  • 269 просмотров
Решения вопроса 1
StivinKing
@StivinKing Автор вопроса
Странно, видимо где-то первый раз ошибку допустил.

В общем, кому будет интересно или может поможет кому. В init просто пишем условие, на подобии:
if (this.authService.isLoggedIn()) { ... }
А дальше всю работу по переадресации выполняет роутинг, непосредственно после полной инициализации приложения
Метод isLoggedIn() представляет из себя обычный возврат приватного свойства, которое определяется следующим образом:
set loggedIn(val: boolean) {
     if (typeof val == 'undefined') {
         val = !!this.cookie.getObject('loggedIn');
     } else {
         this.cookie.putObject('loggedIn', val);
     }
     this._loggedIn = val;
 }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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