Я столкнулся с небольшой проблемой для моего веб-приложения в Angular 2.
При каждом запуске приложения я бы проверял, есть ли у пользователя право доступа. Однако я не знаю, как перенаправить пользователя на маршрут, который делает этот процесс независимо от того, где он находится.
Есть идеи?
Заранее спасибо!
Существует два общих пути
используйте настраиваемый RouterOutlet
где вы проверяете, аутентифицирован ли пользователь, в противном случае перенаправляется на логин
Смотрите также
- Проверьте, что пользователь вошел в систему на любой странице, изменив значение в Angular 2
- http://www.captaincodeman.com/2016/03/31/angular2-route-security/
Вы можете реализовать интерфейс 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);
});
});
}
также удалите маршрут по умолчанию.