Next.js 13 Authentication: Custom Email/Password with NextAuth.js & MongoDB

Поділитися
Вставка
  • Опубліковано 14 лип 2024
  • Check out my courses: gtcoding.net/courses/
    In this comprehensive tutorial you will learn how to add authentication to your Next.js 13 app with Email/Password using Next Auth. We will use MongoDB to store the details of the user. We will be using Tailwind CSS for designing the UI.
    Source code: github.com/Godsont/auth-with-...
    Timestamps:
    -----------------------
    00:00 - Demo
    02:59 - Designing UI Using Tailwind CSS
    16:41 - Creating the API
    27:07 - MongoDB
    42:48 - Authentication using Next Auth

КОМЕНТАРІ • 170

  • @Dekorozi
    @Dekorozi 10 місяців тому +1

    Thank you for great Next JS videos. I watched your last NextJs videos. We learnt making contact page, crud and auth. Now I am waiting for a full project video like a blog website with mongodb :)

  • @chiderathankgodobed4496
    @chiderathankgodobed4496 8 місяців тому

    This is has to be the best tutorial i have seen in nextjs auth, thanks so much @GtCoding

  • @alokjoshi334
    @alokjoshi334 11 місяців тому +7

    Thanks a lot for the NextJS 13 videos and end to end projects with database functionality, very much appreciated! very simple and straightforward explanations. Keep up the good work.

    • @GTCoding
      @GTCoding  11 місяців тому +1

      Thank you :)

  • @chiderathankgodobed4496
    @chiderathankgodobed4496 7 місяців тому +4

    fantastic piece on nextauth using app router, I have been having issues integrating next-auth, but your video has made lide easy , Thanks GT coding

  • @JanBuilds
    @JanBuilds 10 місяців тому +1

    Thanks for the tutorial using javascript, not typescript! I have been looking for this for quite a while! :) 🙏🤓

  • @MisbahuA
    @MisbahuA 4 місяці тому +2

    This is one of the best tutorials seen on Nextjs, mongoose and nextauth. Thank you good Sir, really appreciate your effort. Keep it up

  • @Salah-YT
    @Salah-YT 4 місяці тому +2

    Thank you immensely! Your video provided the best tutorial I've ever come across. Your effort is highly appreciated. Wishing you a life filled with greatness. Thanks again!

  • @parspy694
    @parspy694 8 місяців тому

    this is one of the best tutorial i've ever seen kudos to you sir

  • @HimanshuKumar-rn1cn
    @HimanshuKumar-rn1cn 9 місяців тому +1

    this was the perfect video for my use case, I wanted to have a custom login and register form without using any google or github provider. Other videos have complex providers and if they implement only credentials, they didnt use database. This video was very helpful
    thanks

  • @tomasburian6550
    @tomasburian6550 6 місяців тому +7

    This works great with JS, but in the professional world we use TypeScript so we could use the tutorial that also includes types, Next Auth is quite difficult to type so maybe make a video in the future to include that.

  • @BadrudeenAbdul-hameed
    @BadrudeenAbdul-hameed 7 місяців тому +7

    This is reeeeally awesome and on point for my use case. I have been battling with authentication for 2 days now, and your video just saved a life. I can't thank you enough.

  • @GeorgeDonnelly
    @GeorgeDonnelly 8 місяців тому

    This was outstanding, thank you!

  • @leonardohurovich3381
    @leonardohurovich3381 10 місяців тому

    Great video! Love it! Thank you sir

  • @toltec1983
    @toltec1983 9 місяців тому

    best tutorial on the subject on yt.

  • @amirhosseinqafari9747
    @amirhosseinqafari9747 6 місяців тому

    Great, thanks for this solid tutorial.

  • @sagarvavadiya-gm2qd
    @sagarvavadiya-gm2qd 16 днів тому +1

    best explained next authentication concept; easy to understand

  • @codemelon2698
    @codemelon2698 10 місяців тому

    this video is awesome keep up the amazing work

  • @terry_swd
    @terry_swd 4 місяці тому

    Awesome tutorial! I would also add a little success message when user registration is successful in addition to clearing the form. Also it would be nice to reset any previous error state after a successful registration.

  • @raduscortescu6512
    @raduscortescu6512 8 місяців тому

    Thanks, man! Simple great tutorial!

  • @sravankumar8763
    @sravankumar8763 2 місяці тому

    Very good video, want to spend time and have my custom auth . you saved me a lot of lot of time

  • @joakuvideo
    @joakuvideo 8 місяців тому

    Impressive! I changed it a little bit for using prisma. :) thanks!

  • @kbchannel83
    @kbchannel83 4 місяці тому

    Thank You for this video, it's really helpful.

  • @veggtips.shorts
    @veggtips.shorts 9 місяців тому

    Nice content! So helpful, i really appreciate...Thanksss!

  • @leomeynard7671
    @leomeynard7671 7 місяців тому

    Thank you, you explain it well.

  • @lembazaa7330
    @lembazaa7330 8 місяців тому

    thanks a lot you are the besty one that explane this next auth thanks broo keep going 😃😁

  • @onigbindedavid6630
    @onigbindedavid6630 8 днів тому

    This is ur second video i am watching, i love how u rlteach n create simple user interface

  • @maskman4821
    @maskman4821 7 місяців тому

    Great tutorial ❤

  • @adelinaakylbekova308
    @adelinaakylbekova308 Місяць тому

    Thank you for this tutorial

  • @nguyenlehuuduy6272
    @nguyenlehuuduy6272 4 місяці тому

    Thank you immensely!

  • @sarbeswarsahoo8579
    @sarbeswarsahoo8579 11 місяців тому

    Thanks a lot for the video

  • @codigo6273
    @codigo6273 9 місяців тому

    Thanks a lot for this video📌

  • @manzurajshahi
    @manzurajshahi 11 місяців тому +1

    I really needed this simple login using NextApp. Thank you for this beautiful tutorial.
    I request to you.
    Please add "Forget password" feature for this tutorial.😊

  • @Nanashi-rq7lk
    @Nanashi-rq7lk 11 місяців тому

    Thanks tutorial. your viedo is good.

  • @Binod-km1xm
    @Binod-km1xm 29 днів тому

    Really Amazing Teaching❤❤

  • @patlagoon
    @patlagoon 6 місяців тому +1

    Thanks for this tutorial, it's really clear. I was struggling to understand authentication and this helped me tremendously. Could you do a follow up on this topic with "email validation" after registering and "forgot your email?" functionalities ?

  • @byronloarte
    @byronloarte 11 місяців тому

    Great video and more content about Next.JS please my dear friend 🙏

  • @tempuser9560
    @tempuser9560 10 місяців тому

    Awesome explanation about Next JS 13 Authentication. Thanks a lot. Can you please make one video with mysql server instead of mongoose. and with image upload functionality. Thanks a lot in advance!

  • @taukiralam414
    @taukiralam414 9 місяців тому

    Man you are the best ..

  • @hakanaki
    @hakanaki 8 місяців тому

    Thank you for this tutorial. Every other UA-camr is just doing login with Google SMH

  •  10 місяців тому

    Thank you soo much

  • @mijeongwon2355
    @mijeongwon2355 9 місяців тому

    Thanks a lot!

  • @Ruben-sc7dj
    @Ruben-sc7dj 9 місяців тому

    Thank you!:)

  • @surindersingh7799
    @surindersingh7799 7 місяців тому

    great video :)

  • @michellaurent1361
    @michellaurent1361 8 місяців тому

    thanks you, perfect

  • @wayvroom
    @wayvroom 8 місяців тому

    Awesome tutorial my brother keep it up ❤

  • @Mascode
    @Mascode 18 днів тому

    You're the GOAT !!

  • @zee_designs
    @zee_designs 10 місяців тому +1

    Straightforward approach 🦾

  • @MarcosFelipe-up9lc
    @MarcosFelipe-up9lc 6 місяців тому

    Thanks bro!!

  • @ManiSingh-gr7zi
    @ManiSingh-gr7zi 4 місяці тому

    Thank you.

  • @PauloRdeOFerraz
    @PauloRdeOFerraz 7 місяців тому

    Impressed with the quality, congratulations! A question regarding next-auth. Would it be possible to use the same database with registered users to create a login for another React Native application, for instance?

  • @ProgrammerArif
    @ProgrammerArif 11 місяців тому

    Great!

  • @mrrafay2530
    @mrrafay2530 7 місяців тому

    Good tutorial kindly also add role base authentication in this project

  • @piodgamer4084
    @piodgamer4084 Місяць тому

    Thanks bro It's very good peace and love ^.^

  • @ezequieloliveira222
    @ezequieloliveira222 4 місяці тому

    Muito bom bem explicado e simples, so achei esse e JS e não em Typscript

  • @testing-jr8tz
    @testing-jr8tz 5 місяців тому

    thanks man

  • @darshanathamara8546
    @darshanathamara8546 10 місяців тому

    Thank You Very Much can you do video for file upload API ? and Role-based routing?

  • @piotrrodzen772
    @piotrrodzen772 10 місяців тому +1

    great tutorial. Perhaps you could also add password system with JWT as I feel its much more secure in general

    • @judevector
      @judevector 9 місяців тому +1

      Jwt is not for password,bcrypt is . Jwt is for cookies , sessions and I think next-auth comes automatically with it , you can see he use jwt in that credentials there ,am thinking maybe that's how it's been used in NextJS unlike Nodejs

  • @Hasoon-ry8pu
    @Hasoon-ry8pu 11 місяців тому

    Thanks for this video. Will you make a complete blog that brings together all the concepts?

  • @rogertan2153
    @rogertan2153 9 місяців тому

    i love mongodb all my homies love mongodb

  • @user-kx8gv2yk4v
    @user-kx8gv2yk4v 10 місяців тому +1

    Could you make a tutorial about how to use the jwt and cookie to store the user's login condition with nextjs and next-auth? Thank you very much

  • @arshah246
    @arshah246 9 місяців тому

    thanks alot great work. but i think its time for server action

  • @afzaalahmedtai8211
    @afzaalahmedtai8211 9 місяців тому +1

    Thanks for amazing video but I didn't understand that why did you make another API to check user exist or not. Can we check while register user in register API?

  • @Sebas-lk3jv
    @Sebas-lk3jv 11 місяців тому

    thx

  • @joshjakkrit6085
    @joshjakkrit6085 25 днів тому

    37:00
    You don't have to create extra api route (userExists).
    All you have to do is set email unique: true in the schema. And update the same api route (register).
    const existingUser = await User.findOne({ email });
    if (existingUser) {
    return NextResponse.json(
    { message: "Email already in use." },
    { status: 409 } // conflict status
    );
    }
    The form will display the message if you have this when (res.ok) = false
    const data = await res.json();
    setError(data.message)

  • @A03L
    @A03L 6 місяців тому

    I just subscribed :)
    Great content, easy and simple explanation
    I have a question tho, how do I hide that callback query in the url, its really annoying ... thanks

  • @razonspielt1851
    @razonspielt1851 10 місяців тому

    So i have a question, if I would make the same as you. Can I host it on a webhoster like hostinger in a shared hosting? Or do I need a vps? I ask this because this is my first next js project with auth js.

  • @vsandhudeveloper3282
    @vsandhudeveloper3282 10 місяців тому

    Can you please start an ecommerce series which include all concepts with mongo

  • @deepaknegi3940
    @deepaknegi3940 10 місяців тому

    Can you please a video on how to use NextAuth and Next-intl together.

  • @Iyexis
    @Iyexis 6 місяців тому

    Hey, we're using cognito provider for authentication, is there a way to implement the same or similar solution for a custom form with a different provider?

  • @theDStaten
    @theDStaten 5 місяців тому

    i already have NextAuth configured for Google OAuth flow. Will the email & password setup from this video work with another OAuth provider being set up?

  • @heisenbergcodm7380
    @heisenbergcodm7380 10 місяців тому

    Hi Sir can you make the video on how to store the image from next js to mongodb and retreive the image from mongodb and display the image on frontend

  • @michaelseaman7020
    @michaelseaman7020 5 місяців тому

    Hello and thank you for your video! i have one issue. I cloned the code from the repo and it works fine, except in the userInfo component, it only displays the email. I could not get it to display any other properties. Thank you so much

  • @patrickjreid
    @patrickjreid 8 місяців тому

    Great video. is there a way to do this server side?

  • @targettech2578
    @targettech2578 10 місяців тому

    Nice work.. how about change and forget password

  • @programwithalex
    @programwithalex 3 місяці тому

    hey thank you. you seemed like one of those random indian channels but you cantually have good content!

  • @yellowsmurfz
    @yellowsmurfz 11 місяців тому

    Thank you for this helpful video, will you make a follow up tutorial for adding tokens in your requests to the api and logging out the user if the token expires?

    • @GTCoding
      @GTCoding  11 місяців тому +1

      Ok, I'll try.

    • @praiseoshilim1006
      @praiseoshilim1006 10 місяців тому

      @@GTCoding handling refresh tokens too please?

  • @sina2706
    @sina2706 5 місяців тому

    ❤❤❤❤❤❤

  • @abdullahkayhanlar3167
    @abdullahkayhanlar3167 9 місяців тому

    Thanks for project, how to create a forgot password page?

  • @MabelEkemezie
    @MabelEkemezie 11 місяців тому

    Pls I have I need your help after following up your work and I have deployed mine but I just saw myself in the home page
    Not even the sign in and login page what's wrong pls?
    I used netlify

  • @prashlovessamosa
    @prashlovessamosa 9 місяців тому

    Hello your sir can you please teach us some advance topics of NextJs.

  • @1337sHADOWSTAR
    @1337sHADOWSTAR 9 місяців тому

    how u make ctrl + d and change name, setName to password, setPassword and u change Password with big letters first word

  • @basitbaig
    @basitbaig 5 місяців тому

    Hi, I need little help regarding session object null, i have follow this awesome tutorial and create a simple app, but after login the session always return NULL object at client but it shows object values at server console. Please help I am frustrated because it is about 3 days and I am stuck.... Thank you

  • @redbeardjunior
    @redbeardjunior 10 місяців тому

    I have one bug if I create a email & it exist, you will get the error it already exits if you create a second email after that it will not disappear but it wil create the email.

  • @azamattugelbay
    @azamattugelbay 8 місяців тому

    Can I ask how much is this safe? Can we use it in production projects

  • @spear5264
    @spear5264 10 місяців тому

    Bro please make about next js 13 app directory

  • @user-tu4ng7hq5y
    @user-tu4ng7hq5y 29 днів тому

    sir the middleware logout button will not work its refresh and have on the same page dashbord page

  • @user-ez8on4ro8f
    @user-ez8on4ro8f 9 місяців тому

    can anyone tell me the theme nsme he is using...?? please

  • @uzmanalband9498
    @uzmanalband9498 4 місяці тому +1

    I am trying to deploy this app to vercel, deployment is successful but unable to login

  • @hamzapaskingakhtar
    @hamzapaskingakhtar 6 місяців тому +1

    @1:02
    When I add the imports in the login I get this error,
    TypeError: Cannot read properties of undefined (reading 'User') which is related to the models
    I don't understand what's the relation as it has nothing to do with the schema model in the login

    • @kiranmungekar8918
      @kiranmungekar8918 5 місяців тому

      Hi Hamza, I am also facing same issue... did you find any solution on that?

  • @warriorking778
    @warriorking778 10 місяців тому

    ! important
    How to implement role based redirect. eg. for user has "/user" and for admin has "/admin". When I signin successfully then it will automatically redirect.

  • @SimarMannSingh
    @SimarMannSingh 4 місяці тому

    I stumbled upon this video. I wish to provide a constructive feedback.
    I don't agree with using useState() hook at all for the login/register form. Everytime the value changes, it will cause a re-render of the component. This is a very inefficient way actually. Maybe you can also make another video highlighting this and improving on it.
    A better approach would imho be, to use the FormData(), populating it, instead of useState().
    Many fellow developers have also pointed this out multiple times. Perhaps you can make a new version of this video?

  • @FRESHGAMENEWS
    @FRESHGAMENEWS 8 місяців тому +1

    I got an error in components/UserInfo.jsx (8:38) @ useSession
    Error: [next-auth]: `useSession` must be wrapped in a
    How can i fix that? Is error because of using app directory?

    • @GTCoding
      @GTCoding  8 місяців тому +1

      Make sure to wrap the content of the layout file with the SessionProvider. Here is the timestamp: ua-cam.com/video/PEMfsqZ2-As/v-deo.htmlfeature=shared&t=2851

    • @FRESHGAMENEWS
      @FRESHGAMENEWS 8 місяців тому

      I looked for the error for 3 days and googled and could not find the solution. Now everything works! Thank you so much! @@GTCoding

  • @TheDionysiac
    @TheDionysiac 11 місяців тому +2

    Overall awesome video. But I'm a bit confused as to why we don't sign in the user after they register? At least I can't see anywhere in the source code where this happens.

    • @Tids_
      @Tids_ 9 місяців тому

      it's normal practice to do it that way

    • @raduscortescu6512
      @raduscortescu6512 8 місяців тому

      Normally, you have to validate the user by email confirmation, then you have to use the credentials to log in. That's the most secure way. You can have hackers attack your website and database if you can register and login automatically.

  • @hills6940
    @hills6940 10 місяців тому

    I guess the user's session should expire at some point due to inactivity. How can that be implemented?

  • @altifyx_
    @altifyx_ 5 місяців тому

    i want to place it in a other folder for example in a admin folder, so the login one directly in admin, but then register in a a register folder inside admin so it would look like admin/register. But then it doesn't work, what am i doing wrong 😅

  • @developersplatform1132
    @developersplatform1132 10 місяців тому

    can you deploy it into netlify

  • @TiredAndWearyTraveler
    @TiredAndWearyTraveler 11 місяців тому +1

    hi, I am having trouble getting this to work on my side.
    i pulled from the github, did npm install, npm run dev, set up a mongo atlas server, created the .env and added the needed variables.
    I am able to register new users and can see them in the database, but when I try to log in with the email and password it does not do anything.
    it does not give any error either.
    did i miss a step, am i doing something wrong?

    • @JusTheWebDevNJIT
      @JusTheWebDevNJIT 10 місяців тому +1

      yea im having the same issue its taken me hours and i cant figure it out. I've narrowed it down to the authorize function because the user is being returned incorrectly. Mine is only returning the email or nothing at all.

    • @Lixeann
      @Lixeann 9 місяців тому

      ​@@JusTheWebDevNJIT @dantedurant3412 Solution: Change secret to not a URL but a keyword like secret: 'test', and put it above the providers declaration, then it will work (tested myself)

  • @fcdaoo
    @fcdaoo 3 місяці тому

    👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏

  • @mikhacavin
    @mikhacavin 10 місяців тому

    why not using typscript?

  • @nasarullahkhan3379
    @nasarullahkhan3379 11 місяців тому +6

    Where is forgot password???????????????????????????????????????????????????????????????????????????????????????????????????

    • @mrj4082
      @mrj4082 4 місяці тому +3

      Add it yourself