Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Utilizar JWT com várias APIs Rest

Boa tarde Flávio

A um tempo atrás no fórum do curso de MEAN, postei uma dúvida sobre JWT e você me orientou, e consegui chegar até esta situação atual:

Tenho várias API Rest, onde utilizo basic http, para evitar acesso direto.

Front-end em AngularJS, desacoplado de todas API Rest. Onde este front acessa todas as APIs, enviando nos headers a autenticação (basic http). Esta funcionando tudo corretamente.

Estou desenvolvendo outra API Rest, que tem a responsabilidade de autenticar os usuários da empresa e gerar tokens. Estou utilizando (io.jsonwebtoken), consigo gerar os tokens, com as permissões necessárias de cada usuário.

No front-end, estou utilizando o (angular-jwt), fiz testes realizando login, armazenando o token no Local Storage, recuperando este token e pegando as informações do usuário que realizou o login, no logout consigo remover o token e funcionou corretamente.

A estratégia que pensei em adotar é a seguinte:

Quando o usuário realizar o login com sucesso, vou gerar o token, armazenar no Local Storage e utilizando o (jwtHelper.decodeToken) do angular-jwt vou armazenar as informações deste usuário ($rootScope.usuarioAutenticado) por exemplo.

Sempre que acontecer uma mudança de rota, eu utilizo o ($rootScope.$on('$routeChangeStart'), e verifico se existe um token e se este token não expirou (jwtHelper.isTokenExpired).

O que eu quero saber é se posso adotar esta estratégia?

Ou talvez tenha uma melhor prática para esta situação?

Pensei dessa forma, pois não vou precisar enviar o token nas requisições (via headers) das outras APIs Rest. Apenas preciso dele para autorizar os usuários de cada setor da empresa a determinadas views.

5 respostas
solução!

Pode usar sim, não vejo problema nenhum. Eu prefiro a primeira, pois capturo qualquer requisição ajax feita no sistema.

O problema de usar a primeira, é que as outras API Rests recebe já uma autorização no headers. Então pensei nessa estrategia.

Obrigado Flávio, eu estava preocupado, se era uma situação viável ou não.

Por enquanto esta dando certo Flávio.

Estou usando o "angular-permission":

https://github.com/Narzerus/angular-permission

Achei bem bacana como você pode trabalhar com permissões e etc.

OPA! Esse eu não conhecia.

No Git mesmo tem documentação e exemplos:

https://github.com/Narzerus/angular-permission/wiki

Eu estava pesquisando sobre utilizar autorização em rotas e achei. Ai resolvi apenas testar e ver como funciona, e por enquanto esta dando certo.