ユーザーがログインしていない場合、保護されたルートへのアクセスを制限するAuthGuardServiceを正常に実装しました。ユーザーがすでにAngular 4でログインしている場合、ログインルートへのアクセスを制限する方法は?
私が達成しようとしているのは、ユーザーが既にログインしてログインルートにアクセスした場合、ホームページのような別のルートに
あなたは、ログインするユーザーを必要とパスの CanActivateガード使用することができますユーザーがログインしていない場合、保護されたルートへのアクセスを制限するAuthGuardServiceを正常に実装しました。ユーザーがすでにAngular 4でログインしている場合、ログインルートへのアクセスを制限する方法は?
私が達成しようとしているのは、ユーザーが既にログインしてログインルートにアクセスした場合、ホームページのような別のルートに
あなたは、ログインするユーザーを必要とパスの CanActivateガード使用することができます:あなたが行うことができ
@Injectable()
export class LoginActivate implements CanActivate {
constructor(private authService: AuthService, private router: Router) {}
canActivate(
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot
): Observable<boolean>|Promise<boolean>|boolean {
if (!authService.isLoggedIn()) {
this.router.navigate(['home']);
}
return true;
}
}
動作しません。ユーザーがログインしているときに私が得るのは、「home」ルートの空白ページです。 –
いくつかエラーがありますか?ガードに関する公式文書は次のとおりです。あなたのプロジェクトにそれを実装する方法を理解してください:https://angular.io/guide/router#guards – Boulboulouboule
エラーはありません。単に動作を拒否します。決して気にしない、私は別の方法で、同様の問題を持つ他の人を助けるための回答として掲示します@Boulboulouboule –
:
const ROUTER: Routes = [
{path: 'restricted', component: MyRestrictedCOmponent, canActivate:[LoginActivate]},
{path: 'home', component: HomeComponent},
];
そして、ホームページ上のログに記録されないユーザーをリダイレクトガードをログインコンポーネントのngOnInitを簡単にチェックして、既に認証されている場合は別のページにリダイレクトしてください:
ngOnInit() {
if (this._authService.isLoggedIn) {
this._router.navigate(['/apps']);
}
}
それは私のために働いた!
ユーザーがすでにログインしている場合、ホームページにリダイレクトするログインルートのための別のcanActivateガードを作成します。 – LLai
サンプルコードを共有してもよろしいですか? @LLai –
それは本質的にBoulbouloubouleが投稿したものです。ログインしている場合はホームページに移動し(falseを返す)、ログインページに移動するようにtrueを返します。次に、このガードをあなたのルート定義のログインルートに添付してください。 – LLai