Angular 2——在guard启动之前初始化会话服务
Angular 2 - init a session service before guard kicks in
我有这个守卫来监视应用程序中受保护的路由基本上,我的会话服务从NgOnInit中的localStorage提取它的凭据,然后守卫应该询问服务它是否有凭据,这样它就知道是否应该批准这个路由
import { Injectable } from '@angular/core';
import { Router, CanActivate } from '@angular/router';
import { SessionService } from './../session/session.service'
@Injectable()
export class AuthGuard implements CanActivate {
constructor(
private router: Router,
private sessionService: SessionService
) { }
canActivate() {
//without this line this won't work
//this.sessionService.loadUser();
if (this.sessionService.isValidSession()) {
// logged in so return true
return true;
}
// not logged in so redirect to login page
this.router.navigate(['/login']);
return false;
}
}
这是我的会话服务
export class SessionService implements OnInit {
.
.
.
constructor(
private authService: AuthenticationService,
) {
this.timeout = null;
}
ngOnInit() {
this.loadUser();
}
现在的问题是,ngOnInit在我的会话服务不会自动调用,我必须显式调用loadUser()内部的保护,这不是我想做的
任何想法如何使会话服务的ngOnInit得到执行之前的canActive的警卫?
非常感谢!
不要只使用组件的服务使用"OnInit"。相反,在服务的构造函数
相关文章:
- 使用javascript函数在页面初始化后加载jquery
- 未捕获错误:无法在初始化之前调用方法;
- 如何在剑道网格初始化后设置pageSizes
- React redux初始化功能,无论状态变化如何
- 为什么可以't Protractor在自动初始化的Angular网站上查找Angular
- 尝试初始化()Spine's控制器和故障
- Angular.js延迟控制器初始化
- 对插件初始化后动态加载的元素进行样式设置
- Angular JS控制器初始化错误
- 在XMLHttpRequest之后重新初始化jQuery
- ember-js组件初始化不同的函数
- Youtube JavaScript API不是't正在初始化
- 函数无法识别初始化的变量
- datepicker引导程序再次初始化
- jquery数据表在初始化时设置宽度
- 如何使用app和secret进行安全的解析初始化
- 从javascript中再次初始化c变量
- 如何在脚本标记的功能中初始化会话
- Angular 2——在guard启动之前初始化会话服务
- 在流星应用程序中,会话值应该在哪里初始化?