Angular 2: перенаправление на страницу при запуске приложения

0

Я столкнулся с небольшой проблемой для моего веб-приложения в Angular 2.

При каждом запуске приложения я бы проверял, есть ли у пользователя право доступа. Однако я не знаю, как перенаправить пользователя на маршрут, который делает этот процесс независимо от того, где он находится.

Есть идеи?

Заранее спасибо!

Теги:
angular
angular-ui-router
angular2-routing
angular-routing

2 ответа

1

Существует два общих пути

  • использовать CanActivate
  • используйте настраиваемый RouterOutlet

    где вы проверяете, аутентифицирован ли пользователь, в противном случае перенаправляется на логин

Смотрите также
- Проверьте, что пользователь вошел в систему на любой странице, изменив значение в Angular 2
- http://www.captaincodeman.com/2016/03/31/angular2-route-security/

  • 0
    похоже, что angular не справляется с перенаправлениями легко ... Много усилий, чтобы просто заставить первую страницу моего приложения ... Я попробую эти два метода, спасибо!
  • 1
    Смотрите также captaincodeman.com/2016/03/31/angular2-route-security
0

Вы можете реализовать интерфейс OnInit и добавить ngOnInit перенаправления/проверки в метод ngOnInit и добавить @CanActivate к своим дочерним компонентам:

class Static{
   static authenticated:boolean = false;
   static initialized:boolean = false;
}

@CanActivate(()=>{
   if(Static.authenticated && Static.initialized){
      return true;
   }
   return false;
})

protected ngOnInit():any
{
    this.loginFacade.refresh().subscribe(event=>
    {
        var url = event.success ? this.location.path() : Routes.LOGIN;

        Static.authenticated = event.success;

        this.router.recognize(url).then(()=>
        {
            return Promise.resolve(url);
        }, (e)=>
        {
            return Promise.resolve(Routes.LOGIN);
        }).then((url)=>
        {
            Static.initialized = true;
            return this.router.navigateByUrl(url);
        });
    });
}

также удалите маршрут по умолчанию.

  • 0
    Вызывается OnInit, но я не могу использовать маршрутизатор в своем основном классе ... У меня ошибка "не могу прочитать свойство 'constructor' of undefined". Спасибо за Ваш ответ
  • 0
    извините, ваш комментарий мне не понятен.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню