簡體   English   中英

Angular Authgaurd 登錄后不重定向或強制應用程序到主頁

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM