使用Angular2创建单个页面应用程序,我拦截未经身份验证的用户访问自定义RouterOutlet中的非公用路由,并将其重定向到登录视图.成功登录后,我想将用户重定向到原来请求的视图,而不是默认视图.
我注意到路由器有一个导航到最后一个成功路由的renavigate()函数,但最后一个成功的路由是/ auth / login,而不是最初请求的URL.
基本上:如何访问或确定先前请求的URL?
我真的不想诉诸传递查询字符串参数,除非我真的要.理想情况下,访问历史记录集作为路由器组件的一部分是很好的,类似于backbone.history!
>使用Auth Guard(实现
CanActivate)来防止未经身份验证的用户.参见
official documentation和例子
this blog.
>在守护者中使用 RouterStateSnapshot来捕获所请求的URL.
原文链接:https://www.f2er.com/angularjs/142747.html>在守护者中使用 RouterStateSnapshot来捕获所请求的URL.
canActivate(route: ActivatedRouteSnapshot,state: RouterStateSnapshot) { // keep the attempted URL for redirecting this._loginService.redirectUrl = state.url; }
>使用Router(例如在login.component.ts中),成功验证后重定向到该URL.例如. this._router.navigateByUrl(的redirectUrl);
附: @MichaelOryl和@Vitali的建议将会起作用,但是我的方式更符合Angular2的最终版本.