首先,我不确定这是处理此问题的最佳方法,但我正在寻找的是“/”上的路由保护,它检查用户是否登录,如果是,则将他们重定向到“/dashboard” . 我想在加载路由之前执行此操作,以避免屏幕闪烁,因为正在检查远程服务器上的身份验证状态。
我正在实现 canActivate 接口,但它没有按预期工作。它命中身份验证服务并返回用户,根据此测试代码应该重定向用户,但我在控制台中看到用户但没有重定向。
这是代码
import { Injectable } from '@angular/core';
import { Router, CanActivate } from '@angular/router';
import { Observable } from 'rxjs/Observable';
import { User } from './../../models/user.model';
import { AuthService } from './auth.service';
@Injectable()
export class HomeAuthGuard implements CanActivate {
constructor(
private router: Router,
private authService: AuthService
) {}
canActivate(): Promise<boolean> {
return new Promise((resolve) => {
this.authService.getStatus()
.then(function (user: User) {
console.log('home auth', user)
this.router.navigate(['/dashboard']);
resolve(false);
})
.catch(function () {
resolve(true);
});
});
}
}