我们可以导航/重定向到任何登录网址(不同的主机和应用程序),还是我们必须导航/重定向到我们应用程序路径中的网址?
角度网站的示例表明只允许应用程序路由:
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
if (this.authService.isLoggedIn) { return true; }
// Store the attempted URL for redirecting
this.authService.redirectUrl = state.url;
// Navigate to the login page
this.router.navigate(['/login']);
return false;
}
答案 0 :(得分:1)
您是否尝试过navigateByUrl()?
有关用法,请参阅https://angular.io/docs/ts/latest/api/router/index/Router-class.html。
但: 为什么您需要一个不属于您的应用程序的“外部”URL? 我认为最好的实际操作是外部authService而不是单独的“Login-Page-Application”。或者这样。
e.g。
$('.main').has('p:contains(' + deleteName + ')').remove();
//$('.main').has('p:contains(name2)').remove();
//Searching for text: name2
import { Injectable } from '@angular/core';
import {CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router} from '@angular/router';
import {Observable} from "rxjs";
import {AuthService} from "../services/auth.service";
@Injectable()
export class LoginGuard implements CanActivate {
constructor(protected router: Router, protected authService: AuthService) { }
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | boolean {
console.log('AuthGuard#canActivate called');
if (state.url !== '/login' && !this.authService.isLoggedIn()) {
this.router.navigate(['/login'], {queryParams: {redirectTo: state.url}});
return false;
}
return true;
}
}