【发布时间】:2016-08-10 10:55:23
【问题描述】:
我在 Angular 2 中的 Web 应用程序遇到了一个小问题。
每次应用程序启动,我都会检查用户是否有访问权限。 但是我不知道如何将用户重定向到使这个过程无论他在哪里的路线。
有什么想法吗?
提前致谢!
【问题讨论】:
我在 Angular 2 中的 Web 应用程序遇到了一个小问题。
每次应用程序启动,我都会检查用户是否有访问权限。 但是我不知道如何将用户重定向到使这个过程无论他在哪里的路线。
有什么想法吗?
提前致谢!
【问题讨论】:
常用的方法有两种
使用自定义RouterOutlet
检查用户是否通过身份验证,否则重定向到登录路径
另见
- 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);
});
});
}
同时删除默认路由。
【讨论】: