Acessando a página após logado! | Fórum | School of Net

Deseja poder participar de nosso fórum e tirar todas as suas dúvidas?
Clique aqui e assine nosso plano de acesso ilimitado. Saiba mais.

por Ricardo

4 semanas atrás Ricardo

Acessando a página após logado!

Olá professor tudo bem? Espero que sim. Assisti a live, compreendi os benefícios do interceptor e vou tentar migrar meu projeto para ele visto que na versão antiga tive mais problemas e não consegui evoluir com o jwt. Após ver a videoaula e tentar praticar fiquei com uma dúvida que agradeço antecipadamente se puder esclarecer. Entendi que a segurança da navegação de conteúdos autenticados, se dá ao passar o parâmetro: canActivate: [AuthGuardService] na chamada das páginas. Certo? Então entendi que no login.components.ts a chamada abaixo está redirecionando para a página de login porque o usuário ainda não se autenticou. Correto? ``` login() { this.auth.login(this.user) .subscribe(() => { this.router.navigate(['/dashboard']); }); } ``` E no app-routing.module.ts: ``` const routes: Routes = [ {path: 'login', component: LoginComponent}, {path: 'dashboard', component: DashboardComponent, canActivate: [AuthGuardService]}, {path: 'pagina2', component: Pagina2Component} ]; ``` Aí em seguida lá no auth-guard.service.ts existe a condição que redireciona o usuário para o login se não tiver token. ``` canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean { if (!this.hasToken()) { this.router.navigate(['/login']); return false; } ``` Até ai se eu estiver certo no meu entendimento (que foi o que compreendi assistindo a live), vem a minha dúvida. Assim que ele ignorar este if porque o token está ativo, ele deveria automaticamente ir para o dashboard ou precisa fazer conforme o else abaixo (eu que coloquei o else para testar)? ``` canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean { if (!this.hasToken()) { this.router.navigate(['/login']); return false; } else { this.router.navigate(['/dashboard']); } ``` Se eu estiver certo, então não entendi porque ele não conseguiu direcionar. Se já fosse para ele continuar indo para dashboard sem a necessidade do else, também não está indo. Já quando faço o teste com a página2, sem colocar o canActivate: [AuthGuardService] na rota, funciona bem. Porém, nesse caso não vale, porque mesmo sem autenticar a página 2 entra. rs Poderia me explicar um pouco em cima deste contexto? Obrigado!

19 Respostas