Javascript Angular 2执行登录身份验证(我正在进入无限循环。)
我正在尝试创建一个网站后端,我需要在Angular 2中对其进行用户身份验证。但我无法解决一些问题,这就是我正在做的 这是我的路由文件Javascript Angular 2执行登录身份验证(我正在进入无限循环。),javascript,angular,typescript,angular2-routing,Javascript,Angular,Typescript,Angular2 Routing,我正在尝试创建一个网站后端,我需要在Angular 2中对其进行用户身份验证。但我无法解决一些问题,这就是我正在做的 这是我的路由文件 const appRoutes: Routes = [ { path: 'admin', component: AdminloginComponent, canActivate: [LoggedInGuard] }, { path: '', component: HomepageComponent }, { path
const appRoutes: Routes = [
{
path: 'admin',
component: AdminloginComponent,
canActivate: [LoggedInGuard]
},
{
path: '',
component: HomepageComponent
},
{
path: '**',
component: OurservicesComponent
},
];
这是我的gaurd文件://成功登录后,我正在设置是否已登录到本地存储中
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;,不带返回真 或者
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
if(localStorage.getItem("is_logged_in")) {
return true;
}
this.router.navigate(['/admin/dashboard']);
return false;
}
或
嗨,冈特。。谢谢回复,实际上我想在angular2中进行登录验证,我发现我们应该使用CanActivate。我遵循了,但在这里,每个人都在路径:,上使用canactivate,但我认为它应该在/admin上。这是错误的。你可以提供一些参考。关于什么,请参考?只是前后不一致。如果您返回true,则表示可以继续导航,但同时导航离开,但另一个选项是您不做任何操作,只是发出信号,表示应阻止继续导航。您好,您能在这个问题上帮助我吗:。提前谢谢
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
if(localStorage.getItem("is_logged_in")) {
this.router.navigate(['/admin/dashboard']);
return false;
}
return true;
}