首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NoProviderError在角2中使用CanActivate

NoProviderError在角2中使用CanActivate
EN

Stack Overflow用户
提问于 2016-06-30 16:54:52
回答 3查看 1.4K关注 0票数 2

我用的是角度2和路由器3.0.0-aplha.8。

我试图使用CanActivate函数来检查用户是否经过身份验证。我有一个实现AuthGuard的CanActivate,现在我只返回true。

route.ts

代码语言:javascript
复制
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-卫士

代码语言:javascript
复制
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)时,会得到以下错误:

我不知道发生了什么。有人知道吗?

谢谢伊万

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-06-30 16:59:11

我想如果你把MAIN_ROUTER_PROVIDER改成

代码语言:javascript
复制
export const MAIN_ROUTER_PROVIDER = [provideRouter(mainRoutes), AuthGuard];

应该管用的。

票数 5
EN

Stack Overflow用户

发布于 2016-06-30 16:59:13

您也需要引导这些警卫,这样才能正确地使用:

代码语言:javascript
复制
export const AUTH_PROVIDERS = [AuthGuard];

然后

代码语言:javascript
复制
export const MAIN_ROUTER_PROVIDER = [
  provideRouter(mainRoutes),
  AUTH_PROVIDERS,
];

更多信息请访问https://angular.io/docs/ts/latest/guide/router.html#!#can-activate-guard

票数 2
EN

Stack Overflow用户

发布于 2016-06-30 17:08:28

您还需要引导AuthGuard。按以下方式更新路由提供程序

export const MAIN_ROUTER_PROVIDER = [provideRouter(mainRoutes), AuthGuard]

并调整引导函数以包含此列表bootstrap(appcomp,MAIN_ROUTER_PROVIDER)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38129212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档