Angular 2:在应用程序启动时重定向到页面

问题描述 投票:0回答:2

我在Angular 2中的Web应用程序面临一个小问题。

每次启动应用程序,我都会检查用户是否有权访问。但是我不知道如何将用户重定向到使这个过程适合他的地方的路线。

有任何想法吗?

提前致谢!

angular angular2-routing
2个回答
1
投票

有两种常见的方式

  • 使用CanActivate
  • 使用自定义RouterOutlet 在哪里检查用户是否经过身份验证,否则重定向到登录路由

也可以看看 - Check if the user logged in on any page change in Angular 2 - http://www.captaincodeman.com/2016/03/31/angular2-route-security/


0
投票

您可以实现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);
        });
    });
}

还删除默认路由。

© www.soinside.com 2019 - 2024. All rights reserved.