我在Angular 2中的Web应用程序面临一个小问题。
每次启动应用程序,我都会检查用户是否有权访问。但是我不知道如何将用户重定向到使这个过程适合他的地方的路线。
有任何想法吗?
提前致谢!
有两种常见的方式
也可以看看 - Check if the user logged in on any page change in Angular 2 - http://www.captaincodeman.com/2016/03/31/angular2-route-security/
您可以实现OnInit
接口并在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);
});
});
}
还删除默认路由。