问题描述
路由模块
{
path:'login',component:LoginComponent
},{
path: '',component: DefaultComponent,canActivate:[AuthGuard],children: [{
path: '',component: DashboardComponent
},
登录component.ts
let hey=data["API Key"]
let id=data["id"]
console.log(id);
console.log(hey);
localStorage.setItem("key",hey),this.router.navigateByUrl('/');
// window.location.reload(true)
Authgaurd.ts
canActivate():boolean{
if (this._authsevice.loggedIN()){
return true
}
else{
this._router.navigate(['/login'])
return false
}
}
Authservice.ts
export class AuthService{
loggedIN(){
return !!localStorage.getItem('key')
}
}
一经身份验证,它就会创建一个密钥并将其存储
但我不明白为什么该页面仍处于登录页面而没有重定向或导航并强制authservice搜索密钥
当我强制重新加载页面时
我仍然获得登录页面,并且通过第二次身份验证,我可以访问所有其他页面
我不明白为什么 以及如何在存储密钥后强制角度应用程序查看
解决方法
您可以返回网址树,您应该这样做:
canActivate(): boolean | UrlTree {
if (this._authsevice.loggedIN()){
return true
}
return this._router.navigate(['/login'])
}
回答您的问题:
使用Observable
作为BehaviourSubject
的登录状态,您将Observable<boolean | UrlTre>
用作canActivate
中的返回值。