AUTENTICAÇÃO COM JWT NO NESTJS

แชร์
ฝัง
  • เผยแพร่เมื่อ 8 พ.ย. 2024

ความคิดเห็น • 107

  • @softultraviolence5673
    @softultraviolence5673 2 ปีที่แล้ว +8

    didática incrível, implementação muito melhor que a maioria dos vídeos no TH-cam, mas passei o vídeo inteiro pensando "meu deus como esse cara digita tão rápido???"

    • @leobritob
      @leobritob  2 ปีที่แล้ว +1

      KKKKKKK tenho que concordar, você não é o primeiro a dizer isso 😂
      Fico feliz que o vídeo tenha ajudado.

  • @gustanobreza
    @gustanobreza 3 ปีที่แล้ว +7

    Top d+!!!
    Uma sugestão de vídeo: faz um vídeo abordando o tema de autorização, aí usa o projeto desse vídeo como base

    • @leobritob
      @leobritob  3 ปีที่แล้ว

      Que legal que você curtiu!
      Obrigado pela sugestão, sem dúvidas, uma ótima dica! 🔥🚀

  • @wellingtonostemberg7585
    @wellingtonostemberg7585 ปีที่แล้ว +1

    Top demais cara, simples, mas sem deixar de tocar nos pontos fundamentais. Parabéns!

  • @paulomorais5245
    @paulomorais5245 ปีที่แล้ว +3

    Uma das vídeo aulas com didática perfeita que já vi aqui no TH-cam. Simples e direta. Fiz todo o código e funcionou perfeitamente. Além de assimilar as principais funcionalidades do NestJS em relação a autenticação, fiquei surpreso com a praticidade do framework em relação ao tema abordado. Parabéns! Vou agora esperar uma vídeo aula sobre autorização com o NestJs. Risos. Abraços e mais uma vez parabéns.

  • @narebinhaa
    @narebinhaa ปีที่แล้ว +2

    PQP! Perfeito! Umas das melhores aulas que já vi! Muito ver conteúdo nacional deste nível. Agradeço demais! #euviateofinal

  • @wltech3460
    @wltech3460 2 ปีที่แล้ว +3

    Mano que aula top oque demorei 3 dias para fazer sozinho kkkk nos primeiro 4 min do video você ja mostrou como usar o Typorm e banco de dados relacional Parabéns mano top d +++💜

    • @leobritob
      @leobritob  2 ปีที่แล้ว +1

      Que top, mano! Fico feliz demais que o vídeo tenha te ajudado, segue aqui e lá no Instagram @leobritob. Breve, novidades.
      Grande abraço 🚀

    • @wltech3460
      @wltech3460 2 ปีที่แล้ว

      @@leobritob Boa bora pra cima rsrssr

  • @torquat0_
    @torquat0_ 2 ปีที่แล้ว +2

    Primeiramente todo sucesso aí pra você, confesso que levei uma semana pra conseguir terminar esse crud, tinham algumas coisas que não estavam funcionando aqui, não sei se por conta de atualizações, tive que buscar outras formas de fazer, mas no fim deu certo, valeu de verdade pela didática, ajudou muito.

    • @leobritob
      @leobritob  2 ปีที่แล้ว

      Que show! Que bom que conseguiu, fico feliz em ajudar. Grande abraço!

  • @emersonjose288
    @emersonjose288 ปีที่แล้ว

    Você manda muito, aula incrível de autenticação, parabéns amigo.

  • @pedrinf9440
    @pedrinf9440 ปีที่แล้ว

    Parabéns, Leo, que aula sensacional, muito obrigado, me ajudou bastante, sua didática é excelente.

  • @BernardoVerasDev
    @BernardoVerasDev 2 ปีที่แล้ว +5

    Mano, que vídeo top! Parabéns pela didática… 💜

    • @leobritob
      @leobritob  2 ปีที่แล้ว +1

      Obrigado, fico feliz que o vídeo tenha te ajudado! Grande abraço 🚀

  • @adsonsouzajesus
    @adsonsouzajesus 2 ปีที่แล้ว +2

    Sua didática é TOP, parabéns cara.

    • @leobritob
      @leobritob  2 ปีที่แล้ว

      Muito obrigado, grande abraço!! 🔥🚀

  • @erickfreitas4044
    @erickfreitas4044 ปีที่แล้ว +1

    Massa de mais leo, usei como base o seu e fiz o meu com prisma orm

    • @leobritob
      @leobritob  ปีที่แล้ว

      Que legal! 🚀

  • @itarocha
    @itarocha 9 หลายเดือนก่อน

    Fantástico, man! Salvou horas e horas do meu trampo! Parabéns

  • @cesarmendonca2807
    @cesarmendonca2807 3 ปีที่แล้ว +4

    Única sugestão seria nas partes que envolver código se pudesse dar um zoom ou fonte maior para que fique confortável assistir pelo celular. Muito boa didática com objetividade, aborda detalhes q não vi em outros vídeos e cursos. Parabéns! Já estou na lista aguardando o curso pelo site.

    • @leobritob
      @leobritob  3 ปีที่แล้ว +1

      Obrigado pelo seu feedback, César! Sempre muito importante para mim como está sendo a experiência de quem assiste aos vídeos. Com certeza vou adequar os próximos, fique ligado que terá muito mais vídeos por aqui 🔥
      (Na lista também terá novidades ainda melhores 😉)

  • @NascimentoTalesDev
    @NascimentoTalesDev 2 หลายเดือนก่อน

    E Parabéns Leo!!

  • @emmanuelramon820
    @emmanuelramon820 2 ปีที่แล้ว +1

    Parabéns pelo conteúdo, muito didático e interessante o projeto. Estou vendo todo o conteúdo no canal.

  • @richelmylopes5073
    @richelmylopes5073 3 ปีที่แล้ว +2

    Vídeo muito top, didática incrível e um trabalho muito bem feito, valeu pelo vídeo e continue trazendo mais conteúdo pra gente.

    • @leobritob
      @leobritob  3 ปีที่แล้ว +1

      Valeu, Richelmy! Fico feliz que tenha gostado. 🚀
      Conte comigo 👊🏻

  • @brunofelixf
    @brunofelixf ปีที่แล้ว

    Aula excelente! Prática, didática e objetiva... muito bom mesmo!

  • @jrodrigo6576
    @jrodrigo6576 ปีที่แล้ว

    Que cara rápido da porra kkkk parabéns mano, conteúdo super TOP!!

  • @willianbrandao467
    @willianbrandao467 2 ปีที่แล้ว +1

    Conteúdo muito bom, excelente trabalho, me ajudou muito. Vi até o final!

    • @leobritob
      @leobritob  2 ปีที่แล้ว

      Que top! Obrigado, mano. Fico feliz demais que o vídeo tenha te ajudado.
      Continue acomodando aqui e no Instagram: @leobritob.
      Em breve, muitas novidades.
      Grande abraço 🚀

  • @raphaelamericano4115
    @raphaelamericano4115 2 ปีที่แล้ว +1

    Obrigado.Excelente tutorial. Sucesso com o canal!

    • @leobritob
      @leobritob  2 ปีที่แล้ว

      Fico feliz que o vídeo tenha ajudado, um grande abraço! Valeu!!

  • @vyctorhff40
    @vyctorhff40 ปีที่แล้ว

    Show de bola, cara. Ótimo vídeo. Obrigado por compartilhar.

  • @heldercambuta723
    @heldercambuta723 8 หลายเดือนก่อน

    Didáctica muito boa, valeu pelo conteúdo!

  • @drksbr
    @drksbr 2 ปีที่แล้ว +1

    É interessante criar uma classe helper com o id, createdAt e updatesAt e daí na entity tu estende ela.

  • @maykesantos4148
    @maykesantos4148 3 ปีที่แล้ว +1

    Show de bola! Vi até o final.

    • @leobritob
      @leobritob  3 ปีที่แล้ว

      Valeu, Mayke! Tamo junto 🔥🚀

  • @Rian1991Carlos
    @Rian1991Carlos 2 ปีที่แล้ว +1

    Tem como pegar o id do usuário logado para não ter que ficar passando na requisição?

  • @guilhermemaffei6532
    @guilhermemaffei6532 2 ปีที่แล้ว

    Conteúdo que vale milhões

  • @wendelsantos3399
    @wendelsantos3399 9 หลายเดือนก่อน

    Excelente, aprendi demais! Obrigado.

  • @alexsteeve
    @alexsteeve 3 ปีที่แล้ว +2

    Leo, vídeo muito bom! Uma sugestão: colocar o @useguards no controller para todas as funções, menos para Post. Como uma pessoa vai criar um usuário já logada?

    • @leobritob
      @leobritob  3 ปีที่แล้ว +3

      Legal, Alex! Muito boa sua pergunta. De fato, com o @UseGuard um usuário novo só seria cadastrado por um usuário que já possua acesso ao sistema, uma forma é igual você mesmo sugeriu: colocar o @UseGuard em todos métodos menos no Post.
      Porém, aqui vai minha sugestão também, podemos deixar o endpoint /users apenas para uso interno, ou seja, totalmente restrito a usuários já com acesso.
      E criar um rota nova para novos usuários, algo assim, POST /api/auth/signup, dessa maneira deixamos esse controller com acesso público.
      Obrigado por sua contribuição! 🚀

  • @omagoprogramador6627
    @omagoprogramador6627 2 ปีที่แล้ว +1

    Parabéns pelo conteúdo me ajudou muito! Grato!

    • @leobritob
      @leobritob  2 ปีที่แล้ว

      Valeu, Gui! Tamo junto 👊🏻

  • @felipefarias9073
    @felipefarias9073 ปีที่แล้ว +1

    Excelente, obrigado!

  • @andreyaraujo
    @andreyaraujo 3 ปีที่แล้ว +1

    Vídeo muito bom, a explicação ta foda. Teus vídeos estão me ajudando demais.

    • @leobritob
      @leobritob  3 ปีที่แล้ว

      Que top mano! Fico feliz que tenha te ajudado. Breve, teremos mais vídeos de NestJS no canal

  • @hallancosta1302
    @hallancosta1302 5 หลายเดือนก่อน

    Leo, como faria se eu usasse @UseGuards(AuthGuard('jwt')) em todos os endpoints do user.controller, porém eu queria deixar só a rota de criar usuário que seria o store com o decorator @Post como publico, como poderia ser feito isso? 53:21 (mais ou menos nessa parte o codigo completo com tudo implementado)

  • @uhelliton123
    @uhelliton123 2 ปีที่แล้ว

    Leo parabéns irmão pelo excelente contéudo, seus videos são excelentes

  • @israelmsnts
    @israelmsnts 2 ปีที่แล้ว

    Ótimo vídeo, justamente o que está procurando

  • @s_silas
    @s_silas 2 ปีที่แล้ว

    Mano, me salvou demais com todo esse conhecimento! Para galera que tem procurado mais sobre Nestjs, poderiam me indicar bons sites, videos e demais conteudos sobre o framework?

  • @silvadeoliveira
    @silvadeoliveira 2 ปีที่แล้ว +1

    parabéns, me ajudar muito era exatamente o que eu precisava, grato. pretender fazer um vídeo Refresh token ?

    • @leobritob
      @leobritob  2 ปีที่แล้ว +1

      Obrigado Fabio, fico feliz que o vídeo tenha te ajudado. Opa, fique ligado terá novos vídeos como esse aqui no canal.

  • @willianregina
    @willianregina ปีที่แล้ว

    tu é brabo em! parabéns mano

  • @veremox
    @veremox 2 ปีที่แล้ว

    krl mlk é um monstro do nest

  • @elvesbrito9633
    @elvesbrito9633 2 ปีที่แล้ว +1

    Muito top brother seu material. Refresh token seria uma boa também.

    • @leobritob
      @leobritob  2 ปีที่แล้ว +1

      Que bom que curtiu, Elves! Obrigado pela sugestão, farei com certeza!

  • @ivanbarbosa9753
    @ivanbarbosa9753 3 หลายเดือนก่อน

    Obrigado. Video sensacional...

  • @lucasvellido8519
    @lucasvellido8519 2 ปีที่แล้ว +2

    Olá Leo! Qual video você fala do whitelist?

    • @leobritob
      @leobritob  2 ปีที่แล้ว +1

      Olá, Lucas! É esse vídeo aqui: th-cam.com/video/ExDNuI819ss/w-d-xo.html

  • @gabrielborges8028
    @gabrielborges8028 2 ปีที่แล้ว

    #EUVIATEOFINAL, quero agradecer de coração esse vídeo, aprendi muito com ele. Verifiquei que a função findOneOrFail sofreu algumas modificações, se você conseguir mudar no git vai fica topdmais, é uma modificação bem simples,mas levei um tempinho pra descobrir kkk. Parabéns pelo trabalho, qualidade altissima.

    • @emanuelvieira6540
      @emanuelvieira6540 2 ปีที่แล้ว +2

      Fala amigo, pode me dizer como usou o findOneOrFail após as modificações?

    • @matheusvictorhenrique
      @matheusvictorhenrique 2 ปีที่แล้ว +1

      Pfvr nos mostre como

  • @nicholasbalby4535
    @nicholasbalby4535 2 ปีที่แล้ว

    Muito bom véi, ta funcionando muito bem. Só que eu tô tentando pegar o req.user no controller e ta sempre undefined. Tem alguma solução?

  • @Darkplayer721
    @Darkplayer721 3 ปีที่แล้ว +1

    muito bom! Parabéns

  • @NascimentoTalesDev
    @NascimentoTalesDev 2 หลายเดือนก่อน

    Estou aprendendo nestjs e essa questão de modulos, providers... me confunde um pouco. Estava com um problema aparecendo "Error: secretOrPrivateKey must have a value". Solução Simples, é só remover dos providers o JwtService da class AuthModule.
    providers: [
    AuthService,
    PrismaService,
    UsersRepository,
    UsersService,
    LocalStrategy,
    JwtService - REMOVE e PRONTO
    ],
    export class AuthModule {}
    Espero que ajude.

  • @leonardoncintra
    @leonardoncintra ปีที่แล้ว +1

    #FIQUEIATEOFINAL - agora como fazer os testes com o jwt protegendo as URLs ?

  • @MarcoAntonioMartinsJunior
    @MarcoAntonioMartinsJunior 2 ปีที่แล้ว +1

    Excelente vídeo!!!

  • @davicastro8391
    @davicastro8391 2 ปีที่แล้ว +1

    agora implementa o refresh token
    não tem video em pt sobre isso

    • @leobritob
      @leobritob  2 ปีที่แล้ว

      Obrigado pelo comentário, Davi! Temos a aula de refresh e muitas outras aulas (toda semana) lá na plataforma (O NOVO DEV), o link está na bio.
      Qualquer dúvida, só chamar!

  • @ubiratanfreire2759
    @ubiratanfreire2759 ปีที่แล้ว +1

    Show

  • @alexsteeve
    @alexsteeve 3 ปีที่แล้ว +1

    Outra dúvida que fiquei é se usando o findOneOrFail, eu posso fazer um select como foi feito no find? Porque acho que não tem necessidade de passar o password por exemplo. Na verdade acho que devia trazer os mesmos dados que o findall

    • @leobritob
      @leobritob  3 ปีที่แล้ว +1

      Muito boa sua pergunta! De fato, não há necessidade retornar a hash da senha, dessa forma, nós podemos fazer um select para filtrar as propriedades, seria algo assim:
      this.usersService.findOneOrFail({ id }, { select: ['id', 'firstName', 'lastName', 'email' ] })
      (Igual o findAll)
      Valeu pela contribuição! 🚀

  • @lucascarinhanha5917
    @lucascarinhanha5917 2 ปีที่แล้ว

    a autenticação começa em 30:35

  • @elioenay
    @elioenay 2 ปีที่แล้ว +1

    Fera demais

    • @leobritob
      @leobritob  2 ปีที่แล้ว

      Valeu, Eli! Tamo junto 👊🏻

  • @guilhermedeassis2442
    @guilhermedeassis2442 2 ปีที่แล้ว

    Como eu acesso esse token na minha aplicação como um todo? quero usar o id do usuario em alguns lugares especificos

  • @leonardo.cardoso
    @leonardo.cardoso ปีที่แล้ว

    Muito bom!

  • @niiel98
    @niiel98 2 ปีที่แล้ว

    Fala, cara. Beleza? será que poderia me dar uma dica sobre cors? tentei usar o enablecors, sua estrutura e cors true no nest factory create. Nenhum deles me fez passar pelo cors.

  • @elielmatosdelima5380
    @elielmatosdelima5380 2 ปีที่แล้ว

    Se eu quiser usar o cpf pra validar, invés do email, consigo apenas trocando o 'usernameField: email' por cpf? fazendo dessa forma não consegui

  • @elielmatosdelima6103
    @elielmatosdelima6103 3 ปีที่แล้ว +1

    Cara, video top, muito bom. Gostaria de perguntar uma coisa, sou leigo no assunto, estou começando estudar recentemente. No método update por exemplo, você fez 3 linhas de código, uma pra buscar, uma pra juntar e uma pra salvar. Existe o método **update** que ja faz isso tudo. Quando é recomendado eu usar ou não usar os métodos que fazem algo de uma vez?

    • @leobritob
      @leobritob  3 ปีที่แล้ว +3

      Obrigado, Eliel! Fico feliz que o vídeo tenha ajudado 🚀
      Muito boa a sua pergunta:
      No caso da busca eu fiz ela para saber se de fato aquele usuário realmente existe no banco de dados, caso não exista, o backend irá retornar um erro para o frontend, é interessante fazer isso por conta da segurança - nem tudo é performance.
      Já o merge, ele faz a mesma coisa que o update por debaixo dos panos, contudo a diferença é que o update ele irá executar a atualização apenas na tabela que você está executando, no caso a tabela users, mas imagine um cenário onde iremos realizar uma atualização com níveis de relacionamento, por exemplo users -> address. Sendo address uma outra tabela de relacionamento com outras propriedades mas que possui uma chave estrangeira user_id. O update irá retornar um erro porque ele não conhece o adress, já o merge irá funcionar porque ele é um método da classe Repository, então ele entende que essa propriedade é do relacionamento entre as duas tabelas.
      Espero ter ajudado!
      Grade abraço!!

  • @alexandreverissimo3011
    @alexandreverissimo3011 ปีที่แล้ว

    Quando tento usar o FindConditions o typeorm reclama dizendo que ele não é um membro exportado. Foi descontinuado o uso dele?

  • @DanielSilva-ep1ur
    @DanielSilva-ep1ur 8 หลายเดือนก่อน

    Muito bom, foda d+

  • @WellDMLT
    @WellDMLT 2 ปีที่แล้ว +2

    Conteudo top, tirou várias duvidas que tinha em relação a como construir essa auth. Valeu memo pelo conteudo #FIQUEIATEOFINAL hahahaha
    Alias, uma dúvida que ficou. Num cenário comum, como seria pra colocar o create user como publico, (tipo, cadasdtro e login são publicos) como alguém poderia cadastar, sendo que o desenvolvido essa opção não é possivel?

  • @gutsbaiano7212
    @gutsbaiano7212 3 หลายเดือนก่อน

    Mano, fiz igualzinho como vc fez, mas estou tomando erro no nest: JwtStrategy requires a secret or key
    TypeError: JwtStrategy requires a secret or key
    Nem o chatGPT conseguiu descobrir o pq, n viu erro nenhum, vc teria discord para eu poder te mostrar com mais detalhe?

  • @ThiagoMota-m8j
    @ThiagoMota-m8j 11 หลายเดือนก่อน

    excelenteee

  • @thiagoleite3255
    @thiagoleite3255 ปีที่แล้ว

    #EuViAteOFinal :) obrigado pela aula

  • @joilton5857
    @joilton5857 ปีที่แล้ว

    #EU_VI_ATE_O_FINAL

  • @ubirajaramelo
    @ubirajaramelo 2 ปีที่แล้ว +1

    #FIQUEIATEOFINAL , muito bom!

    • @leobritob
      @leobritob  2 ปีที่แล้ว

      Valeu, cara! Fico feliz que tenha chegado até o final. Vamos nessa!! 🚀

  • @ronnysilveira8373
    @ronnysilveira8373 ปีที่แล้ว

    Top,!!

  • @GuilhermeVozniak
    @GuilhermeVozniak 2 ปีที่แล้ว +1

    quando vou tipar o id como string no service do user ele fala " Type 'string' has no properties in common with type 'FindOneOptions' " se deixar sem a tipagem ele aceita mas quando vou salvar um novo usuario fala que o parametro name não tem um valor default alguém sabe a solução?

    • @GuilhermeVozniak
      @GuilhermeVozniak 2 ปีที่แล้ว

      Field 'name' doesn't have a default value

    • @LTWalkthroughs5
      @LTWalkthroughs5 ปีที่แล้ว

      async update(id: string, data) {
      const user = await this.findOneOrFail({ where: { id } });
      this.usersRepository.merge(user, data);
      return await this.usersRepository.save(user);
      }
      tenta usar desse jeito colocando where

  • @ronaldosantos7777
    @ronaldosantos7777 ปีที่แล้ว +1

    Toppppppppp

  • @leonardosoares6397
    @leonardosoares6397 2 ปีที่แล้ว

    Fala mestre, meu deu um erro aqui, JwtStrategy requires a secret or key
    TypeError: JwtStrategy requires a secret or key

    • @gabrielborges8028
      @gabrielborges8028 2 ปีที่แล้ว

      Provavelmente no seu arquivo .env a váriavel JWT_SECRET_KEY pode estar escrita errada, por isso no seur arquivo jwt.strategy.ts no campo de secretOrKey não está recebendo nenhum valor, você pode verificar a escrita ou então colar lá no secretOrKey uma chave que pode ser gerada com o comando " openssl rand -base64 32 ". Você pode encontrar ssa parte no vídeo em 34:31

  • @erilshackle
    @erilshackle 3 หลายเดือนก่อน

    Ja viu esse video pelo celular?? 🙃 parece chato né? Pois pois

  • @paulomorais5245
    @paulomorais5245 ปีที่แล้ว

    #EuViAteOFinal

  • @marcosChalet
    @marcosChalet 7 หลายเดือนก่อน

    #euviateofinal