2
respostas

Como autenticar todas as chamadas e telas para que somente um usuário autenticado possa acessar?

Boa noite!

Primeiramente gostaria de dizer que esse curso está muito bom, parabéns ao instrutor!

Tenho algumas perguntas em relação a estrutura de autenticação e ao JWT token, segue abaixo:

01 - Autenticação de todas as rotas:

Seguindo a estrutura de validação que o professor utilizou nos vídeos, cada vez que uma classe precisa verificar se o usuário está logado, ela precisa ter injetado o serviço do usuário e chamar o método que 'assina' o subject, a fim de obter os dados que o serviço disponibiliza, recebendo também alterações quando propagadas pelo serviço.

Dúvida: E se eu precisar validar todos as rotas da minha aplicação, evitando por exemplo que um cliente não logado acesse diretamente a rota '/animais'?

02 - Validação do token que está no localStorage:

Toda vez que o usuário realiza um acesso bem sucedido a api retorna no header do response o 'x-access-token', por sua vez esse token é armazenado através do tokenService no localStorage do navegador.

Pelo corpo do token, é possível identificar que ele tem um tempo de expiração e pesquisando, sei que a lib do JWT tem uma função para verificar a validade do token.

Dúvida: Caso o token do meu usuário que estava lá guardado no localStorage expire, de que forma eu definiria o retorno para a tela de login, considerando que não sei exatamente em que tela o usuário está no momento da checagem do token expirado?

2 respostas

Olá Gabriel Felipe Werner, tudo bem?

  1. Para protecao de Rotas vc deve utilizar os Route guards. Um arquivo que vai retornar um valor booleano. Desta forma vc vai proteger suas rotas para que pessoas que nao estajam logadas acesse. E no seu arquivos de Rotas irá acrescentar uma propriedade para a rota que vc quer proteger. Propriedade com o nome de : canActivateChild: NomeDaSuaClassService
    canActivate() {
     return true || false;
    }
  2. Assim que verificar se o token está expirado, vc pode fazer essa validacao no propio app component, ai recebendo o retorno de expiracao de token, vc pode fazer o redirecionamento ou qualquer outra tratativa que deseja.

Lembrando, nao esqueca de fechar o tópico .