JWT, algumas dúvidas do fluxo para os mais experientes #1585
Replies: 7 comments
-
|
Beta Was this translation helpful? Give feedback.
-
Tem um post excelente do pessoal do Hasura sobre como lidar JWTs. Esse guia aborda todos os assuntos importantes sobre como lidar com JWT, desde onde guardar o token, até como usar o token com SSR. https://blog.hasura.io/best-practices-of-using-jwt-with-graphql/ |
Beta Was this translation helpful? Give feedback.
-
Fala mano! Ótimas perguntas, vou responder com o que eu acredito. Estamos passando justamente por esse processo atualmente. Vou descrever como estamos implementando nosso fluxo e porque optamos por cada etapa. Ao se logar via API, ela retorna um cookie e um usuário, vou fazer o seguinte com essa informação:
Então, resumindo suas dúvidas:
OBS: Não estou dizendo que nossa implementação seja a melhor, quis compartilhar justamente pra trocar experiências e você ter uma noção de como as pessoas fazem. Acho que existem muitas formas, pra gente essa foi a que achamos a melhor. |
Beta Was this translation helpful? Give feedback.
-
Show galera, muito obrigado! Se puderem dar uma olhada: A única dúvida que resta é a questão de como fazer o refresh, que já até implementei na api, no login ela responde com o token de chamada e o token de refresh. Vou guardar o token apenas em memória e mandar nos headers, e o token de refresh vou deixar no localStorage, assim que a requisição voltar com erro 403 cliente verifica se tem token de refresh e envia ele para obter um novo token. O que acham deste fluxo, correto? Muito obrigado, abraços. |
Beta Was this translation helpful? Give feedback.
-
E como vocês lidam com o tamanho do token? Em um cenário em que muitas permissões impossibilitam o envio dele via cookie e mesmo via header |
Beta Was this translation helpful? Give feedback.
-
@dattebayorob boa pergunta, para ser sincero ainda não passei por este cenário... Alguém vai dar uma dica ai |
Beta Was this translation helpful? Give feedback.
-
@dattebayorob Por curiosidade eu gerei um token com um payload contendo 100 entradas, e o token gerado pesa ~2.7kb. Apesar das especificações HTTP não definirem um tamanho máximo para cabeçalhos, os servidores foram lá e implementaram um limite mesmo assim. Dos famosos o que aceita o menor tamanho é o nginx, com 4kb. Sendo assim, em média, a tendência é que você consiga enviar um payload com umas 150 entradas (~4kb) sem ter nenhum problema com erros de servidor. Acima disso já fica arriscado. Só um adendo: se você realmente possui uma aplicação com esse número de permissões, talvez valha a pena reavaliar a arquitetura da sua aplicação ou mudar a forma como você lê essas permissões (transformando em um serviço separado ao invés de enviar por payload, por exemplo). |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Fala galera, implantando o fluxo de autenticação e autorização em minha primeira aplicação fullstack com node e reactjs, e surgiram algumas dúvidas:
(E antes de alguém falar que JWT é apenas o token e não o fluxo, ok! As dúvidas são sobre o fluxo rs)
1 - A resposta da api com o token salvo no cookie ou no local storage? (pelo que vi a maioria utiliza no cookie, mas por quê?)
2 - Como eu implemento aqueles "Reminder me" ou "Se lembrar do login"? Para o usuário não precisar logar sempre, eu altero a expiração do token de 1h para 30 dias por exemplo?
3 - Como protegem as rotas lá no node/express? Vi alguns exemplos em que o pessoal ia em cada rota fazendo a validação mas primeiras linhas do controller/handler protegidos, mas teria de fazer isso em todas as funções... Tem alguma maneira de fazer com um middleware ou um middleware já pronto para isto?
Bom, é isso, se alguém puder me ajudar com estas questões.
Abraços!
Beta Was this translation helpful? Give feedback.
All reactions