Meu caro, você me salvou, em tão pouco tempo eu consegui implementar auntenticação no meu trabalho hoje e entreguei minhas tarefas lindamente! um abraço! e muito obrigado!
@LuizTools2 жыл бұрын
Fico feliz que o conteúdo tenha ajudado!
@GabrielSantos-gp9yw4 жыл бұрын
Esse foi um dos melhores vídeos sobre o conteúdo que eu encontrei aqui, agradeço bastante
@LuizTools4 жыл бұрын
Agradeço o feebdack e fico feliz em ter ajudado.
@junior24412 жыл бұрын
Foi a melhor explicação sobre o assunto que eu vi no youtube, fica simples de aplicar até com o mongo conectado.. obrigado luiz!
@LuizTools2 жыл бұрын
Fico feliz que tenha gostado Junior!
@juliothomazelli20633 жыл бұрын
Melhor tutorial que já vi, parabéns.
@LuizTools3 жыл бұрын
Ganhei o dia com esse comentário, haha
@nikemartini2 жыл бұрын
Muito didático, parabéns!
@LuizTools2 жыл бұрын
Obrigado 😃
@felipebeskow32903 жыл бұрын
Finalmente entendi como usar o JWT com Node. Muito obrigado prof.
@LuizTools3 жыл бұрын
Pô, que legal, fico feliz em saber que ajudei. :)
@felipecoelho8112 Жыл бұрын
Mais uma vez seu video me ajudando nos meus estudos. Grato pela aula.
@LuizTools Жыл бұрын
Fico feliz que tenha gostado Felipe!
@JOTADEVJR8 ай бұрын
Video maravilhoso! Objetivo, muito didático e prático. Meus parabéns pelo conteúdo e muito obrigado! Ajudou dms!!! Ganhou um Inscrito!
@LuizTools8 ай бұрын
Valeu!
@phelipeviana882 жыл бұрын
Legal que vc vai direto ao ponto.. Muito simples. parabens pela didatica
@LuizTools2 жыл бұрын
Obrigado 😃
@phelipeviana882 жыл бұрын
@@LuizTools tem algum material que eu consiga fazer o redirecionamento pelo backend caso a resposta seja 401
@LuizTools2 жыл бұрын
Com o objeto response do Express você pode chamar a função redirect. Dependendo da sua tecnologia de frontend, pode funcionar. No entanto, o mais comum é o backend devolver 401 e o front fazer o redirecionamento. stackoverflow.com/questions/19035373/how-do-i-redirect-in-expressjs-while-passing-some-context
@maiconmoreira3 жыл бұрын
Perfeito, direto ao ponto
@luizfduartejr3 жыл бұрын
Fico feliz que tenha gostado da didática.
@marcosfalconi27652 жыл бұрын
Video ficou bastante didático. Obrigado por compartilhar seu conhecimento
@LuizTools2 жыл бұрын
Fico feliz que tenha gostado Marcos!
@lexx_brz2 жыл бұрын
Parabéns, manoo!! Show de Conteúdo!!
@LuizTools2 жыл бұрын
Obrigado 🤙
@paulofernandoee2 жыл бұрын
Excelente tutorial!👏👏
@LuizTools2 жыл бұрын
Fico feliz que tenha gostado. :)
@maikmedeiros84642 жыл бұрын
Parabéns Luíz, seu vídeo foi extremamente objetivo e bem explicativo.
@LuizTools2 жыл бұрын
Fico feliz que tenha gostado Maik!
@TheLekao20092 жыл бұрын
Excelente explicação consegui replicar e adaptar no meu projeto,obrigado!
@LuizTools2 жыл бұрын
Fico feliz que tenha dado certo, obrigado pelo feedback!
@jhonsmite50513 жыл бұрын
Vídeo excelente! Tem informações bem importantes.
@LuizTools3 жыл бұрын
Obrigado pelo elogio!
@rem0Dev2 жыл бұрын
parabens pelo video, muito didatico e simples de ser entendido!!!
@LuizTools2 жыл бұрын
Fico feliz que tenha gostado!
@ricardowally66912 жыл бұрын
Perfeito, video objetivo e direto ao ponto
@LuizTools2 жыл бұрын
Fico feliz que tenha gostado!
@matheusmarques8412 жыл бұрын
Obrigado, amigo. Excelente vídeo. Irá me ajudar muito.
@LuizTools2 жыл бұрын
Fico feliz que tenha ajudado!
@gusprado4 жыл бұрын
Excelente explanação!! Apesar de já ter lido sobre ainda não tinha entendido muito bem o uso da técnica do Token blacklist. Agora ficou mais claro :). Valeu por compartilhar!!
@LuizTools4 жыл бұрын
No vídeo eu dei um exemplo bem rudimentar. Em uma aplicação real você pode salvar em um Redis ou MongoDB, por exemplo, pois é um dado temporário, quase um cache de tokens.
@cristianosales5602 жыл бұрын
Absolutamente perfeito. Muito obrigado.
@LuizTools2 жыл бұрын
Fico feliz que tenha gostado Cristiano!
@EduardoZava10 ай бұрын
Obrigado ! Simples e prático !
@LuizTools10 ай бұрын
Valeu Eduardo!
@OMaisNinja4 жыл бұрын
Parabéns! Conteúdo prático de muita qualidade.
@LuizTools4 жыл бұрын
Fico feliz que tenha gostado!
@carloseduardoteixeirabezer3772 жыл бұрын
simples e objetivo. Simplesmente perfeito
@LuizTools2 жыл бұрын
Fico feliz que tenha gostado!
@BieAnimation3 жыл бұрын
Muito obrigado! Entendi tudinho, melhor tutorial e professor!
@LuizTools3 жыл бұрын
Show de bola, fico feliz em ter ajudado!
@andreiacardoso27444 жыл бұрын
Excelente conteúdo! Parabéns pela didática :) Obrigada pelo compartilhamento de conhecimento incrível e de forma tão simples :)
@LuizTools4 жыл бұрын
Eu que agradeço pelo feedback, a ideia é exatamente essa: ajudar!
@rodolforecordon3 жыл бұрын
Rápido e prático. Valeu pela ajuda!
@LuizTools3 жыл бұрын
Fico feliz que tenha ajudado!
@patrickxfrancoАй бұрын
esse vídeo é ótimo!!
@LuizToolsАй бұрын
Fico feliz que tenha gostado Patrick!
@sergisms4 жыл бұрын
Caramba, que aula massa, primeira vez que assisto um vídeo teu, parabéns pelo material.
@LuizTools4 жыл бұрын
Fico feliz que tenha gostado Sergio.
@gabriellefaria50922 жыл бұрын
Maravilhoso esse video, amei!
@LuizTools2 жыл бұрын
Fico feliz que tenha gostado!
@zoltancaputo9562 Жыл бұрын
awesome class. tks teacher ...
@LuizTools Жыл бұрын
Fico feliz que tenha gostado Zoltan!
@romuelm3953 жыл бұрын
Poxa. Amigo. Muito obrigado. Queria muito aprender isso.
@LuizTools3 жыл бұрын
Fico feliz em ter ajudado!
@giovannerodrigues81023 жыл бұрын
ótimo vídeo, sou iniciante e entendi super bem, gostaria que fizesse um video sobre esse ttl do mongodb, se não tiver no canal, vou dar uma olhada
@LuizTools3 жыл бұрын
Bom dia Giovanne, tudo bem? Aqui tem tudo que precisa saber sobre esse índice: docs.mongodb.com/manual/core/index-ttl/ Resumindo, pegue um campo data, crie índice pra ele dizendo em quanto tempo depois da data daquele campo o documento deve ser excluído automaticamente.
@EduLikoski3 жыл бұрын
Muito legal, bem objetivo!!
@LuizTools3 жыл бұрын
Fico feliz que tenha gostado!
@zvinoera4 жыл бұрын
Parabéns, muito legal. Ganhou um inscrito!
@LuizTools4 жыл бұрын
Fico feliz que tenha gostado Wellington.
@d4niells4 жыл бұрын
Vlw Luiz, conteúdo muito massa, me ajudou bastante cara!
@LuizTools4 жыл бұрын
Fico feliz que tenha gostado Daniel!
@710biel3 жыл бұрын
Boa tarde conteúdo muito bom, só ficaria melhor se mostra-se a parte do front pra exemplificar melhor , parabéns
@LuizTools3 жыл бұрын
Agradeço o feedback. Como o JWT é pro backend confiar em uma requisição vinda de qualquer lugar, pode nem mesmo ter front, pode ser outra API querendo falar com essa. Logo, foge do escopo da lição.
@viniciusfreitas5093 жыл бұрын
muito bom mano, parabéns. GG
@LuizTools3 жыл бұрын
Muito obrigado 😁
@kalebemisael26014 жыл бұрын
muito obrigado pela explicação
@LuizTools4 жыл бұрын
Fico feliz que tenha gostado Kalebe!
@alyxson2 жыл бұрын
mt obrigado, ajudou bastante
@LuizTools2 жыл бұрын
Fico feliz que tenha gostado!
@sardemberg62413 жыл бұрын
Muito obrigado, me ajudou bastante
@LuizTools3 жыл бұрын
Que bom que ajudou!
@joaovictor-dl6ve2 жыл бұрын
É legal colocar dentro do token jwt algo a mais, tipo e-mail, role? tirando o id do usuário.
@LuizTools2 жыл бұрын
Eu costumo colocar o id da role sim. Email eu já acho um pouco sensível para incluir, prefiro apenas ids.
@ricardob77172 жыл бұрын
muito bom, valeu mesmo
@LuizTools2 жыл бұрын
Fico feliz que tenha gostado!
@eduardoleitzke58032 жыл бұрын
o meu req.headers[x-access-token] entrega o valor de undefined... Alguma idéia do que pode ser? Ótimo conteúdo
@LuizTools2 жыл бұрын
Se você programou do jeito que escreveu o comentário está errado, pois o nome do cabeçalho deve ser uma string, entre aspas. Na descrição do vídeo tem o link para o tutorial em texto onde pode acessar os fontes e ver com mais detalhes para resolver estes problemas de código.
@helciopandelo4 жыл бұрын
Perguntas: 1. O secret, funciona como um "parity check"/hash?? 2. Nesse pattern de usar a blacklist, quando limpar a memória?? Pq penso no seguinte, um sistema de 1m de usuários, todos fazendo logout, iria pesar essa array na memoria da aplicação, certo? Parabéns pelo video, sucinto e perfeito pra entender
@LuizTools4 жыл бұрын
Boa tarde Helcio, tudo bem? 1) depende do algoritmo utilizado, mas a resposta padrão é "sim". Mais aqui: auth0.com/blog/json-web-token-signing-algorithms-overview/ 2) eu definiria o tempo de limpeza equivalente ao tempo de expiração do token, afinal, depois que ele expirar, não vale a pena manter na blacklist pois ele já será barrado pelo fator tempo. Note no entanto que em prod eu não faria daquela forma, usaria Redis ou MongoDB. Meu intuito no vídeo foi ser didático. Vale salientar que o "usuário médio" não faz logout, ele só fecha a aba do navegador e deixa a sessão expirar sozinha, haha
@NehruAndreАй бұрын
muito obrigado
@LuizToolsАй бұрын
Fico feliz que tenha gostado André!
@wagnerfix3 жыл бұрын
Obrigado, muito bom a explicação... E agora como aplico isso no meu front? rs
@LuizTools3 жыл бұрын
Depende muito da sua tecnologia de front. Mas em linhas gerais, você faz o POST na rota de login e salva o token recebido em cookies ou localstorage. Em cada requisição subsequente, você pega de onde salvou e manda no header da request, conforme cito no vídeo.
@wagnerfix3 жыл бұрын
@@LuizTools Obrigado pela resposta... essa parte "você faz o POST na rota de login e salva o token recebido em cookies ou localstorage." eu não faço idéia de como fazer. Meu front é Vuejs. Tem alguma dica onde posso preocurar ou como procurar? Obrigado desde já.
@LuizTools3 жыл бұрын
Então, varia muito de front pra front e eu não conheço nada de Vue. Se você já fez tela de login alguma vez na vida, tinha um form, certo? Esse form tem de fazer POST na rota de login do seu backend. Se soou "grego", talvez você tenha de voltar um pouco mais atrás pra dar uma revisada em form, submit, etc. Nesse livro eu ensino esses conceitos todos, mas não falo de Vue: www.luiztools.com.br/livro-nodejs
@ricardojaeschke83022 жыл бұрын
Luiz, entendi como funciona e consegui replicar o video, porém numa aplicação com front-end: como faço para escrever o token no header x-access-token ? No video você preenche manualmente no campo do header com o valor do token, mas numa aplicação fullstack o usuário não faz esse trabalho manual. Como funcionar nesse caso?
@LuizTools2 жыл бұрын
Você faz adição de headers (independente de quais sejam) quando monta a sua requisição, via programação mesmo.
@Caminhosdosul3 жыл бұрын
Muito bom o vídeo, só fiquei com uma curiosidade, caso o usuário apenas feche o Chrome( supondo salvar o token no sessionStorage ) e não no logout, assim o middleware não encaminharia o token à blacklist, tem como fazer algo para eu invalidar também quando ele apenas fechar o chrome?
@LuizTools3 жыл бұрын
Se você fechar o Gmail/Facebook/etc e abrir de novo você continua logado, certo? Esse é um comportamento comum na web, é uma questão de experiência do usuário x segurança. Se julgar que precisa de mais segurança e menos UX, pode fazer com que as sessões sejam bem curtas. Assim, mesmo que o usuário não deslogue da sua aplicação, o token dele duraria poucos minutos, a janela para um sequestro de token seria menor. Outras dicas incluem atrelar o token a um IP ou assinatura digital, não permitindo que ele seja usado de outro computador que não o que recebeu o token originalmente. Sessões curtas e controle de origem das sessões são técnicas comuns que os bancos usam.
@Caminhosdosul3 жыл бұрын
@@LuizToolsA bom, eu estava com medo disso ofertar grandes riscos, mas então seguirei apenas por tempo de expiração, muito obrigado pela explicação. Além disso, seus vídeos estão me dando uma ótima base para o node e noções de backend, valeu mesmo, tu é fera!!
@LuizTools3 жыл бұрын
Fico feliz pelo feedback!
@brunooliveirasantos52412 жыл бұрын
como eu poderia fazer um controle de acesso, exemplo user1 tem acesso a cadstro de usuario, ja o user2, nao
@LuizTools2 жыл бұрын
Você cria perfis de usuário ou então array de permissões. Foge do escopo do JWT em si, mas com a info do token, consegue saber quem é o usuário. Sabendo quem ele é, o seu backend sabe o que ele pode fazer. Fazemos um exemplo prático com perfis no módulo 5 deste curso: www.luiztools.com.br/curso-nodejs
@wantedshark51652 жыл бұрын
como eu faria para passar esse token no front, passaria a rota e passaria o token no body ?
@LuizTools2 жыл бұрын
Não, o token deve ir no header da requisição. Geralmente usa-se o header Authorization o x-access-token
@pedrocosta97692 жыл бұрын
Obrigado. Cadê o código meu brother?
@LuizTools2 жыл бұрын
Link na descrição.
@juelmapereira42778 ай бұрын
Boa!
@LuizTools8 ай бұрын
Fico feliz que tenha gostado Juelma!
@zechiquinho3 жыл бұрын
Valeu cara!
@LuizTools3 жыл бұрын
Fico feliz que tenha gostado!
@thiagolucas22912 жыл бұрын
O token está dando undefined, ele sempre da o erro 401, existe mais algo além desses passos para dar certo ? Eu tenho que fazer alguma requisição?
@LuizTools2 жыл бұрын
Se o token está como undefined é porque ele não está indo junto da requisição. Experimente imprimir no console antes de fazer a verificação, pra ver o que está vindo nos headers.
@thiagolucas22912 жыл бұрын
@@LuizTools quando eu dou um console log no token ele print o token normal, token = jwt.sin(({id: result[0].id}, 'vericador', {algorithm: 'HS256'});
@LuizTools2 жыл бұрын
Esse código que passou está escrito errado. Recomendo dar uma olhada nos fontes da lição, link na descrição, pode até rodar ele na sua máquina pra ver funcionando.
@deivsonb72 жыл бұрын
usa req.headers["x-access-token"] com aspas duplas
@zonork5856 Жыл бұрын
como eu faço pra autenticar pelo front-end?
@LuizTools Жыл бұрын
O front deve apenas enviar usuário e senha pro back autenticar, via HTTP FORM ou algum HTTP client como Axios. A autenticação no fim das contas sempre acontece no back.
@zonork5856 Жыл бұрын
@@LuizTools então eu pesquiso autenticação axios?
@LuizTools Жыл бұрын
@@zonork5856 O tutorial de autenticação é esse do vídeo, consegui fazer? Depois que tiver ele funcionando, tem um vídeo de Axios aqui no canal que pode te ajudar a aprender a utilizar, é um pacote muito popular para fazer a comunicação do front com back.
@zonork5856 Жыл бұрын
@@LuizTools sim sim está tudo funcionando no back, só q eu preciso que qnd eu clique em "login" no front, ele autetifique, é a ultima parte do projeto tlg
@LuizTools Жыл бұрын
@@zonork5856 Dá uma olhada no vídeo de Axios, vai te ajudar a entender como usar um HTTP Client para fazer chamadas para o backend: kzbin.info/www/bejne/h3bIioCknLVkhZI
@andremomb2012 Жыл бұрын
O meu deu isso => TypeError: Cannot read properties of undefined (reading 'user')
@LuizTools Жыл бұрын
Esse erro indica que não pode ler uma propriedade user de um objeto undefined (não inicializado). Deve ter algum detalhe no seu código que está errado, recomendo dar uma comparada com os fontes do tutorial, link na descrição.
@CarlosHenriqueOliveiraSi-un4xr Жыл бұрын
luiz eu quero saber, o segredo de 2023... porque o fundo porque desse fundo em especifico klsksksksksksks mas vlw, brinquei tanto com joguinhos em js que seus videos são bem rapidos e ensina facil da gente olha de novo com faz jwt por exemplo, ou tokenzinho pra user.. afinal é uma das entidades mais chatinhas de lidar. "User" obg dai vlw man
@LuizTools Жыл бұрын
Fico feliz que goste dos vídeos. :)
@brunocota.3 жыл бұрын
Todos os tutoriais que eu encontro eu não vejo ninguém utilizando uma aplicação com o front (HTML, CSS e afins). Eu tenho uma aplicação com as telas em html exportando as rotas delas via express com "res.sendFile(__dirname+"/html/screns/login.html")" e assim por diante. Eu gostaria de saber como eu envio meu token no header para depois acessar ele na verificação. Se alguém poder me dar uma luz será de grande ajuda
@luizfduartejr3 жыл бұрын
É que depende muito do framework de front que estiver utilizando e principalmente da biblioteca HTTP Client, não tem como abordar todas possibilidades. Por exemplo, se estiver usando Axios, você passa na função post ou na get um objeto com os headers http, que você preenche da mesma forma que fiz no Postman ali no vídeo. Se estiver usando jQuery Ajax, é bem parecido com Axios também. Em cada lib HTTP Client, tem de consultar a documentação da mesma para ver como fazer apropriadamente. Em meu curso de Web FullStack JS mostro como fazer usando ReactJS + Axios no front: www.luiztools.com.br/curso-fullstack
@brunocota.3 жыл бұрын
@@luizfduartejr Estou utilizando JQUERY, obrigado, ja conseguiu clarear as coisas!
@LuizTools3 жыл бұрын
Show de bola, depois que pega o embalo, "só vai"!
@maclaurinrocha28812 жыл бұрын
Cara sabe como evito que um usuário entre com mesmo email e senha de varios aparelhos ao mesmo tempo? Quero que ele use apenas um aparelho de cada vez, poderia informar ?
@LuizTools2 жыл бұрын
Tem várias formas e todas elas são baseadas em incluir alguma informação única junto ao payload do JWT. Algumas ideias: incluir o IP, incluir um hash, incluir um ID de sessão, etc. No backend, terá de ter controle desta informação para que toda vez que for validar um JWT recebido, você verificar se essa informação bate com a de quem fez o login. Geralmente faço esse controle com Redis, tem vídeo aqui no canal.
@maclaurinrocha28812 жыл бұрын
@@LuizTools muito obrigado mesmo , vou procurar o video no seu canal , valeu mesmo TMJ
@maclaurinrocha28812 жыл бұрын
@@LuizTools no caso seria este video acima correto? você usa JWT e verifica
@LuizTools2 жыл бұрын
@@maclaurinrocha2881 Você vai ter de fazer verificações adicionais, além do verify que usei no vídeo. Essas verificações adicionais devem confrontar o conteúdo do payload com alguma base sua, de preferência muito rápida (como Redis) pois será verificado novamente a cada request (conforme as suas regras de verificação, apenas dei algumas sugestões).