Angular 2:在应用程序启动时重定向到页面
Posted
技术标签:
【中文标题】Angular 2:在应用程序启动时重定向到页面【英文标题】:Angular 2 : Redirect to a page at application startup 【发布时间】:2016-08-10 10:55:23 【问题描述】:我在 Angular 2 中的 Web 应用程序遇到了一个小问题。
每次应用程序启动,我都会检查用户是否有访问权限。 但是我不知道如何将用户重定向到使这个过程无论他在哪里的路线。
有什么想法吗?
提前致谢!
【问题讨论】:
【参考方案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/
【讨论】:
似乎 angular 不能轻松处理重定向。很多努力只是为了强制我的应用程序的第一页...我会尝试这两种方法,谢谢!【参考方案2】:您可以实现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);
);
);
同时删除默认路由。
【讨论】:
OnInit 被调用,但我不能在我的主类中使用路由器......我有错误“无法读取未定义的属性'构造函数'”。感谢您的回答 我在 Bootstrap 调用的班级 App 中尝试了您的解决方案。看来我们无法在此类中进行重定向以上是关于Angular 2:在应用程序启动时重定向到页面的主要内容,如果未能解决你的问题,请参考以下文章
Spring Security 在新的应用程序启动时重定向到 invalid-session-url