私には以下の問題があります。私はCanActivate Guardを作っており、そこにログインしている場合は債務コンポーネントに「行く」ことができます。私の問題は、私がログインしているときに私は(実際に私のページがブロックされて..と私は何もすることはできません)実際には動作していない、(デフォルトのため、RegisterComponentは)債務コンポーネントにユーザーをリダイレクトしたいです。マイCanActivate機能Angular2 CanActivate Navigate
export class AuthGuardService implements CanActivate {
constructor(private router: Router) { }
canActivate(): Promise<boolean>{
return checkIfAuth().then(() => {
setLoggedIn(true);
this.router.navigate(['/debts']); // <- broken :(
return true;
}).catch(() => {
setLoggedIn(false);
this.router.navigate(['/login']); // <- broken :(
return false;
})
}
}
export function checkIfAuth() {
return new Promise((resolve, reject) => {
firebase.auth().onAuthStateChanged((user) => {
if(user){
return resolve(true);
}
else{
return reject(false);
}
})
})
}
でも私app.routing私が何をしたか
const APP_ROUTES: Routes = [
{ path: '', redirectTo: '/registration', pathMatch: 'full' },
{ path: 'registration', component: RegistrationComponent },
{ path: 'login', component: LoginComponent },
{ path: 'myaccount', component: AccountComponent, canActivate: [AuthGuardService]},
{ path: 'debts', component: DebtsComponent, canActivate: [AuthGuardService]}
];
あなたの投稿に私が理解していないことがあります。正確な問題は何ですか?ユーザーがすでにログインしている場合、ユーザーは 'DebtsComponent'に行きますか?あなたは 'LoginComponent'にどのように到達しますか? –
Menu: からloginComponentにアクセスしました。私がログインしているとき(Debuss Account SingOut)、そうでないとき(Registration Log In)のように見えます。 私の問題は次のとおりです。ユーザー(ログインしているとき)をDebtsComponent(ユーザーがログイン/登録コンポーネントにアクセスしたいとき)にリダイレクトし、ユーザーがログインしていないときにLoginComponentにリダイレクトしたい債務/勘定科目)。 – qwerty1234567
ログイン時にコードが必要になるかもしれませんが、私のヒントは 'Login'であり、Debtsコンポーネントにナビゲートしようとするべきですし、あなたのガードでは、ユーザーがloggedInであれば' true'を返すだけですあなたのガード)。 –