[英]Angular Authgaurd not redirecting or forcing application to home page after login
路由模塊
{
path:'login',
component:LoginComponent
},
{
path: '',
component: DefaultComponent,
canActivate:[AuthGuard],
children: [{
path: '',
component: DashboardComponent
},
登錄組件.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
}
}
身份驗證服務.ts
export class AuthService{
loggedIN(){
return !!localStorage.getItem('key')
}
}
一旦通過身份驗證,它就會創建一個密鑰並存儲它,但我無法理解為什么該頁面仍在登錄頁面中而沒有重定向或導航並強制 authservice 搜索密鑰
當我強制重新加載頁面時,我仍然獲得登錄頁面,並且通過第二次身份驗證,我能夠訪問所有其他頁面
我不明白為什么以及如何在存儲密鑰后強制 angular 應用程序查看
你可以返回一個 URL 樹,你應該這樣做:
canActivate(): boolean | UrlTree {
if (this._authsevice.loggedIN()){
return true
}
return this._router.navigate(['/login'])
}
回答你的問題:
使用Observable
登錄 state 和BehaviourSubject
,你使用Observable<boolean | UrlTre>
Observable<boolean | UrlTre>
作為canActivate
中的返回值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.