我正在使用Angular 2和Router 3.0.0-aplha.8 .
我正在尝试使用CanActivate函数来检查用户是否经过身份验证 . 我有一个实现CanActivate的AuthGuard,现在我只返回true .
route.ts
import { Injectable } from '@angular/core'
import { provideRouter, RouterConfig, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router} from '@angular/router';
import { AuthGuard } from './auth-guard'
import { SecurityComponent } from './security/security.component';
import { AdminDashboardComponent } from './admin/admin.dashboard.component';
export const mainRoutes: RouterConfig = [
{ path: '', component: SecurityComponent, },
{ path: 'admin', component: AdminDashboardComponent, terminal: true, canActivate: [AuthGuard] }]
export const MAIN_ROUTER_PROVIDER = provideRouter(mainRoutes);
auth-guard.ts
import { Injectable } from '@angular/core';
import {
CanActivate,
Router,
ActivatedRouteSnapshot,
RouterStateSnapshot
} from '@angular/router';
@Injectable()
export class AuthGuard implements CanActivate {
constructor(private router: Router) {}
canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot){
return true;
}
}
当我尝试访问“/ admin”(AdminDashboardComponent)时,我收到此错误:
我不知道发生了什么 . 有人有什么想法吗?
谢谢Iván
3 回答
我想如果你改变
MAIN_ROUTER_PROVIDER
它应该工作 .
您也需要引导防护装置,以便正确使用它们:
然后
更多信息在这里https://angular.io/docs/ts/latest/guide/router.html#!#can-activate-guard
您还需要引导AuthGuard . 如下更新您的路线提供商
export const MAIN_ROUTER_PROVIDER = [provideRouter(mainRoutes), AuthGuard]
并调整引导函数以包含此列表
bootstrap(appcomp,MAIN_ROUTER_PROVIDER)