[英]Angular 2 Perform Login Authentication (i am getting into infinite loop.)
我正在嘗試創建一個需要在Angular 2中進行用戶身份驗證的網站后端,但是我無法解決某些問題,這就是我正在做的事情。
這是我的路由文件。
const appRoutes: Routes = [
{
path: 'admin',
component: AdminloginComponent,
canActivate: [LoggedInGuard]
},
{
path: '',
component: HomepageComponent
},
{
path: '**',
component: OurservicesComponent
},
];
這是我的gaurd文件://成功登錄后,我在本地存儲中設置了is_logged_in。
import { Injectable } from '@angular/core';
import { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
@Injectable()
export class LoggedInGuard implements CanActivate {
constructor(private router: Router) { }
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
if(localStorage.getItem("is_logged_in"))
{
this.router.navigate(['/admin/dashboard']);
return true;
}
return false;
}
}
**我的問題是,當url為/ admin時canActivate生效,如果我獲得本地存儲,我將導航至admin / dashboard。
但是,如果用戶已注銷,則在這種情況下,在/ admin上他們應該是loginform,但是如果我導航到/ admin(如果未登錄),它將進入canActivate,並且它們在本地存儲中也不存在,因此轉到admin等。 那么解決此問題的正確方法是什么。
提前致謝。
不清楚您到底想完成什么,但是使用router.navigate
重定向應該return false;
,不return true;
要么
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
if(localStorage.getItem("is_logged_in")) {
return true;
}
this.router.navigate(['/admin/dashboard']);
return false;
}
要么
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
if(localStorage.getItem("is_logged_in")) {
this.router.navigate(['/admin/dashboard']);
return false;
}
return true;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.