ログイン後に別のルート上で自分のユーザーをナビゲートしたい。それは私をリダイレクトしませんただしAngular2 - ログイン後にリダイレクト
// imports on top
import { Component } from '@angular/core';
import { LoginService } from './login.service';
import { Router } from '@angular/router';
// method somewhere below
login(event, username, password) {
event.preventDefault();
let body = JSON.stringify({ username, password });
this.loginService.login(body)
.then(res => localStorage.setItem('token', res.msg))
.catch(error => this.error = error);
this.router.navigate(['/users']);
}
:compoenentで
this.router.navigate(['/users']);
私の完全な方法は、次のようになります。
は、私はこのような何かが正しくそれのために働く必要があることを文書で分かりました。基本的にルートは変更せずにそのまま残り、コンソールにはエラーは表示されません。私は間違っていますか?
編集:私のAuthGuardがどのように見える
const appRoutes: Routes = [
{ path: 'login', component: LoginComponent},
// users route protected by auth guard
{ path: 'users', component: UsersComponent, canActivate: [AuthGuard] },
// { path: 'user/:id', component: HeroDetailComponent },
{ path: '**', redirectTo: 'users' }
];
: 私のルートのように見えます
export class AuthGuard implements CanActivate {
constructor(private router: Router) { }
canActivate() {
if (localStorage.getItem('token')) {
// logged in so return true
return true;
}
// not logged in so redirect to login page
this.router.navigate(['/login']);
return false;
}
}
あなたはloginService.loginからの応答にどのようなデータを取得している、AuthGuardは、そのルート –
へのアクセスからユーザーを防ぐねえ@AnmolMittalそれはJSONオブジェクトです:) – Andurit