Full Stack Authentication With Next.JS | Next Auth | Nest.JS

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

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

  • @SakuraDev
    @SakuraDev  5 หลายเดือนก่อน +3

    ❤Please Support me by subscribing to my channel 👉🏻www.youtube.com/@sakuradev?sub_confirmation=1

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

      i'm already subscribed sir 😇🤗🙃. and thanks your all tutorial videos 🙏. god bless you sir

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

    A masterclass. Your video is the most complete on TH-cam. Most of them always skip an important step, so their video become useless.
    You've made everything from A to Z, thanks a thousand time 🙏

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

      Thank you so much for your nice words 💞. I'm really happy that you like it 😊

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

    Not an easy transition to the NextJS section if you're following along with code, but if you can figure it out, hands down one of the best tutorials out there for refresh tokens for both client and server.

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

      Thanks 👍

    • @arieldebarros
      @arieldebarros 11 หลายเดือนก่อน

      I'm also havind difficulties transitioning to the NextJS. It doesn't even build! How did you manage to follow along the tutorial?

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

    I can assure you, this is one of the best explanations on implementing authentication in Nest/NextJs

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

      Thank you so much for your support 💖🙏

  • @bhavikshah5869
    @bhavikshah5869 7 หลายเดือนก่อน +1

    This was insanely helpful for me. Thank you!

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

      Thank you so much for your support 🙏💓

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

    Very good tutorial, perfect u said a lot of things can not find in others tutorials, especially how to refresh the accessToken silently.

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

      Thanks, I am glad you like it 🙏

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

      @@michaeltrembovler8301 thanks 🙏 it was for the mic settings. I have fixed it.

  • @eugenetsymbal2170
    @eugenetsymbal2170 11 หลายเดือนก่อน

    Thanks for the great tutorial. I just want to make one clarification for those who are not familiar with JWT authorization. The refresh token must be implemented in such a way that it cannot be used more than once. And if an malicious user gets your refresh token and uses it, you will notice it immediately when you try to use it on your side. But in your implementation, if I understand correctly, the refresh token is reusable, since it is hardly possible to implement it without saving the token value itself to the database.

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

    I was looking for a tutorial, not for a mayor!
    (brazilian meme to show how grateful I was for find this!)

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

      So, I hope you like it 😉

  • @PattySpicy
    @PattySpicy ปีที่แล้ว +6

    I will also learn this Tutorial, The combination in this tutorial is awesome !
    I see how amazing things NestJS can do !
    I am still waiting for NestJS Postgres TypeORM, JWT Token, Key Cloak authentication, user role and OTP login !oo

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

      Hey, I am really glad you like it. Since I have not worked with Key Cloak, I need to do some research and find out how we can integrate it with node.js frameworks.

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

      @@SakuraDev I appreciated your replied, I like how you teach a lot. it simple and easy to understand for beginner, but I have given some intermediate task that not much good tutorial available form y usecase, you're kind of my last hope lol

  • @_codesan
    @_codesan ปีที่แล้ว +12

    Terima kasih.

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

      Thank you so much for your support ❤️🙏

  • @owaissurferaccount
    @owaissurferaccount 4 หลายเดือนก่อน

    Thank you so much, NextJS Auth explained well with external BE... amazing

    • @SakuraDev
      @SakuraDev  4 หลายเดือนก่อน

      I'm glad you found it helpful! Combining it with an external backend adds a layer of complexity, but understanding the core concepts is crucial.

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

    Thanks!

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

      Thanks a lot for your support. ❤❤🌷🌷

  • @pain2theworld612
    @pain2theworld612 4 หลายเดือนก่อน

    In CreateUserProfile section you can also replace id with +id so it will convert the string to number

    • @SakuraDev
      @SakuraDev  4 หลายเดือนก่อน

      Thanks for the heads up!

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

    You're the best, Brother! Hope you have a wonderful life ahead of you!

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

      Thanks for your nice words 💖. I hope you do well ❤️‍🩹

  • @vinception777
    @vinception777 10 หลายเดือนก่อน

    Hey thank you so much, you made this very clear to me, I'm using session and not JWT, but your content is currently helping me a ton to setup all this stuff ☺

  • @АлександрМерный-м1ч
    @АлександрМерный-м1ч 9 หลายเดือนก่อน

    good job bro ! A most comprehansive tutorial I've seen.

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

      Thanks 🙏🙏🙏🙏

  • @caresbruh
    @caresbruh 11 หลายเดือนก่อน

    This is far better than those paid courses out there 😍

    • @SakuraDev
      @SakuraDev  11 หลายเดือนก่อน

      I am really glad that you liked it 😊

  • @dionisidoksani7718
    @dionisidoksani7718 11 หลายเดือนก่อน

    Amazing video tutorial. Everything explained and detailed to its core perfection!

    • @SakuraDev
      @SakuraDev  11 หลายเดือนก่อน

      Thank you so much 🙏🙏🙏🙏

  • @tarek.k.hallak
    @tarek.k.hallak 11 หลายเดือนก่อน

    Thanks a lot 🙏🏻🙏🏻
    You have made it super clear.. and you managed to talk about i guess everything that related to authentication and authorization unlike other youtubers

    • @SakuraDev
      @SakuraDev  11 หลายเดือนก่อน

      Thanks 🙏🙏

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

    wow... this is the video I've been waiting for, thanks man

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

      Hope you enjoyed it!

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

    Thank you, a very clear and useful tuto ❤

    • @SakuraDev
      @SakuraDev  2 หลายเดือนก่อน +1

      Thank you so much 🙏. The newer version of this video will be uploaded next Monday which covers a lot more new features.

  • @eriksund1369
    @eriksund1369 8 หลายเดือนก่อน +1

    At 1:23:44 when you refresh it still has the username in the sessions (top right). How is a good way to have all of this updated as well when the accessToken expires?

  • @borooLIVE
    @borooLIVE 4 หลายเดือนก่อน

    just thank you! You achieve new spectator!

    • @SakuraDev
      @SakuraDev  4 หลายเดือนก่อน

      Thanks for visiting and welcome to my channel 👋

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

    i'm wordless, you helped me alot. thank you so much for posting this content!!!!

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

      Thanks 🙏🙏. I am really happy it was helpful for you

  • @tarek.k.hallak
    @tarek.k.hallak 11 หลายเดือนก่อน +1

    With this implementation if i provided a correct token i can Access any endpoint with all the ID's.. that means that i can access any profile i want if i have its id

    • @SakuraDev
      @SakuraDev  11 หลายเดือนก่อน

      That's right, we should have done some extra validation for that, for example we can extract the id of the user from the access token and authorize the user to get the profile if it is its own profile.

  • @angHoangAnhQuan-kb9yq
    @angHoangAnhQuan-kb9yq 9 หลายเดือนก่อน +4

    Hi, I have a question. The refresh token is only use when you reload the page or re-login. What's happen if the access token is expired then you call an API without reload the page? I'm so confused, please help me awnser this. Thank you!

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

      Usually you're making a call for a refresh token before current access token expired

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

    coming here again, very useful video

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

      Thank you so much 🙏🙏🙏

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

    🤗Obrigado amigo! Você é um amigo!

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

      Thank you so much. It means a lot to me 🙏❤️

  • @angHoangAnhQuan-kb9yq
    @angHoangAnhQuan-kb9yq 10 หลายเดือนก่อน

    Hi thanks for the video, I have a question, at the 47:17 mark in the video, I have an error that "Parameter 'req' implicitly has an 'any' type." so it's really an any type or something other type?
    I'm fixing it by add ''@Request() req: any" but do you have any better idea?

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

    This is .... damn! so goooood. thank you a lot ....couldn't help subscribing :)

  • @SoccerIQChallenge907
    @SoccerIQChallenge907 8 วันที่ผ่านมา

    Hi, thanks for your work! I have a question: how can I synchronize the main backend tokens with the token created by NextAuth?

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

    Thank you so much this video is awesome
    I have a question. at the 1:41:30 mark in the video, there's a question about how to hide the session information that appears in the network tab every time you access the web, specifically the "GET /api/auth/session" request, which shows session details such as user and backendTokens. Is there a way to conceal this information? The reason for wanting to hide it is that the token values are being exposed. Do you have any advice on this matter?

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

      Yes, but it isn't a big deal because if the user is not authenticated, it is not shown in the network tab.
      Thanks 👍

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

      @@SakuraDev thank you!

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

      @@SakuraDev How about XSS issue?

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

    Thank you so much friend it's been really useful tutorial!

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

      I am really happy it was helpful for you😃🌹

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

    Thank you so much. your tutorials helped me on my own project. A project idea if its ok, users triggers long running job from client side seeing live status of the said job. Something that can handle lot of users kicking off long running job/script etc

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

      Thanks. Typically, Node.js is not good on long CPU intensive jobs. although, its performance on I/O intensive jobs is great. so it is better to use microservice architecture for this kind of jobs.

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

      @@SakuraDev interesting, do you know any example repo i can look at? my main goal is to run playwright.js browser automation scripts

  • @ozdadev
    @ozdadev 7 หลายเดือนก่อน +1

    In your components you have manually added the Bearer totken which is not a easily maintainable approach, what if refresh token in invalid?

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

    Sir , your tutorial was amazing, i have an one question, my question is when you try to refresh the token at that point is it possible to clear the session with sign-out and redirect to the login page?

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

      Point on. Just tested: in case of invalidated refresh token, the user session remains valid. I could even navigate to routes assumed protected.

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

      Yeaa , and even i con't call logout function in server component also ,

    • @ernestsdane3510
      @ernestsdane3510 11 หลายเดือนก่อน

      That is the nature of JWT auth. There is no real way to honor the user's request to sign out (to invalidate a JWT token) because of this the users are going to stay logged in until the access token expires. In order to solve this issue, you are going to have to look to session based authentication (also known as cookie-based authentication). Because you can save the session tokens in the database, it is very easy to de-authenticate the users - just delete the session token or mark it as invalid.

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

    thanks for the video 🙏🙏❤❤, I was curious how to handle role base authorization, at 1:25:07, you created middleware only for those who have sessions, but what if I have a dashboard for users and a dashboard for admin or maybe a dashboard for sellers?
    I like the way you solved the refresh token problem. I usually use axios interceptors like you taught me in the past.

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

    Thank u, one of underrated awesome content out here.

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

      Glad you think so!

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

    tks for your kindness sharing this nestjs, this is i am looking for..
    please make another video full stack using nest js and next js, like marketplace or airbnb or linked in.. tks

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

      Thanks 🙏, I will do that

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

    that is realy what i was looking for a while... thank you a lot

    • @SakuraDev
      @SakuraDev  5 หลายเดือนก่อน +1

      Glad I could help!

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

    Hey can you make a video with both google and oauth provider like google with capabilities of storing both of these in a database

  • @sksabbirhossain2686
    @sksabbirhossain2686 10 หลายเดือนก่อน

    best video ever. love from Bangladesh.😍😍

    • @SakuraDev
      @SakuraDev  10 หลายเดือนก่อน +1

      ❤️❤️

  • @lucasdindault417
    @lucasdindault417 11 หลายเดือนก่อน +1

    Hey ! Nice video!
    I've just got one question: how do you ensure that, on the Next side, the user is automatically logged out when their token expires?

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

    Monorepo with nextjs + nestjs using drizzle and next-auth with the drizzle adapter would be cool video to watch. Where both next and nest share this drizzle db

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

      Ok, This is a nice suggestion. I put that in my list

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

    thanks bro you are the best teacher!

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

      Thanks 🙏👍, I am really glad to hear that from you ☺️

  • @marcusvinicius1891
    @marcusvinicius1891 11 หลายเดือนก่อน +1

    thank you so much! A real masterclass.

    • @SakuraDev
      @SakuraDev  11 หลายเดือนก่อน

      You're very welcome!

  • @noureddein8044
    @noureddein8044 10 หลายเดือนก่อน +1

    Thanks alot for the amazing videio
    but now what will happend if the refreshToken expired? How I can force the user to logout ? That the main issue i faced when i tried many times to implement the NextAuth.

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

    Greate video , Thank you for sharing 🥰

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

      Thanks a lot 🙏. You can also check out my latest Nestjs course playlist.

  • @Thekjabar
    @Thekjabar 7 วันที่ผ่านมา

    excellent video just I dont know where is login page located

  • @abdalrhmanalmarakeby5813
    @abdalrhmanalmarakeby5813 6 หลายเดือนก่อน

    Thank you very much. This video was very helpful.

    • @SakuraDev
      @SakuraDev  6 หลายเดือนก่อน +1

      Really glad it was helpful

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

    in min 22:00, why you didn't provide the hash salt (which you set to 10 breviously) while comparing the given password and the stored password hash?
    N.B: here is the code snippet I am asking about :
    await compare(dto.password, user.password)

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

      Hey, when comparing, we don't need to pass the salt rounds.

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

      @@SakuraDev why, isn't the salt affect how the hash output will look like?

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

      @@ahmedf2 Really nice question. The compare function's role is simply to check if the two hashes match. The salt and the number of rounds used for hashing are known and stored with the hashed password, so there's no need to specify them in the comparison function.

  • @Valentim_Gab
    @Valentim_Gab 9 หลายเดือนก่อน +1

    When the session expires and the tokens refresh, if you don't press F5, it keeps calling the API thousands of times and when the Refresh expires it gives a lot of errors.

  • @nitishdesigns4210
    @nitishdesigns4210 11 หลายเดือนก่อน +1

    I have one doubt. How to logout user when refresh token is expired?

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

    This was a nice tutorial... what if a user change their system time won't it keep their token from expiring

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

      I have created a new version of this video in which I addressed this issue. It will be uploaded tomorrow

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

    Briefly skimmed through the vide and it look like exactly, what I was looking for. Just had a quick question, my backend for user authentication is developed in Django, but this will be the same right? Thanks!

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

      Hey 👋. Thanks 👍. Yes the nextjs part is the same.

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

    Great tutorial! How can i implement both Credentials and oAuth providers in Auth.js, but with my backend logic in NestJs? That is, store my users in DB, but only NestJs can read/write database?

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

      Hi thanks 🙏. About your question, yes we can it is little different. Actually I am planning for creating a video about it.

  • @carlosbarbier2401
    @carlosbarbier2401 11 หลายเดือนก่อน

    Amazing tutorial. Thanks a million

    • @SakuraDev
      @SakuraDev  11 หลายเดือนก่อน

      You're very welcome!

  • @raff4799
    @raff4799 22 วันที่ผ่านมา

    hello, i noticed that in your tutorial when you return from the signIn screen the user data is already loaded, how did you do that? i'm following the tutorial but when i return from the signIn page the signIn and signUp buttons appear for a brief moment until getSession() puts the data in the react state, thanks for your attention
    (sorry if it seems confusing, I'm from Brazil and I used the translator to write this LOL)

    • @SakuraDev
      @SakuraDev  20 วันที่ผ่านมา

      Hi, 👋
      The auto fill is because of the browser, saved the user name and password.
      Second question: that is because the sign in button component is a client component. If we turn it to a server component, the problem will be fixed.

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

    can we save user records from Next Auth google provider to nestjs and then database?

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

      Yes we can. In next auth events and callbacks we can do that. In my next video I will do that.

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

      @@SakuraDev ty great

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

    why use nest for back-end? is this for educational purpose or next can't handle back-end services?

    • @SakuraDev
      @SakuraDev  ปีที่แล้ว +6

      Next.js can handle backend services. But for scale projects, definitly, you need a powerfull backend framework like nest.js.

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

      @@SakuraDev thank you sir.

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

      @@SakuraDev what is so powerfull in nestjs? next can handle all this easily. If you don't use backend for other projects, you can use next

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

      @@johnkucharsky6927 for example , with nest.js you can easily create microservices.

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

    Thank you so much for this video.I have done authentication with cookies using nestjs and using the api with nextjs 13.on my local host , it works very well and sets the cookie and persists on page refresh.but when i deployed the nestjs api the cookies does not set at all.the login is successful but the cookies dont set.I have tried several solutions but i still get same issue.any idea on how i can go about this? i will really appreciate help on this.Once again thank you so much

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

    Very nice tutorial. I tried to follow up the client side with Next-Auth, cause my authentication backend is already running in ASP. I noticed one issue, and maybe you can explain what is going on. When I authenticate, I'm having correct user data, access token, refresh token and expires in values, till the first refresh call. Refresh endpoint returns correct data, and the same way I'm returning new token with modified backendTokens, but then on every jwt callback, there are still the same values. So it keep refreshing token on every request. But what funny is, when I use getServerSession in Server Action, there the token is correct (refreshed one). So I ended up refreshing token on each and every request after first one expires.
    Has anyone noticed anything like that before?

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

      Same problem here. Did you found the solution mate?

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

    Thank you so much for the video

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

      Thanks 👍🌹🙏

  • @JoãoBisinotti
    @JoãoBisinotti 5 หลายเดือนก่อน

    what about the deprecation warnings for bcrypt dependecies? You didn't get that on your installation but I saw more people with this issue

    • @SakuraDev
      @SakuraDev  5 หลายเดือนก่อน +1

      I will upload an update for this video

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

    Good video except that you left out an important part:
    Checking if the refresh token is expired.
    In a comment below u mentioned that you should just call the sign out function in this case but inside the jwt callback it is not possible to call that function. Yes you could run it inside the protected page but that is also not practical if there are multiple protected pages.
    Then there is also the middleware.ts but when calling the sign out function there and redirecting the user, a window is not defined error is being thrown...

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

      Thanks for bringing that to my attention 🙏

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

      ​@@SakuraDevI found a very simple solution for this.
      We can include the "session" option in inside [...nextauth].ts right after the "callbacks" option. There we set strategy to jwt and maxAge to the same lifetime that we specified for the refresh token in the custom backend.
      The session lifetime and refresh token lifetime will be synchronized that way.
      If the lifetime for the refresh token is 7 days (and session maxAge 7 days) and the user visits the page after 7 days, the session (from the session option) will be expired and the user will be logged out. Hope this helps anyone having the same issue

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

      There is also another big issue: When reloading a page manually the jwt callback is being triggered, but the jwt callback is not being triggered on page transitions.
      So if the user stays on the same page until the access token expires and then e.g. submits something using a button click, he will provide the invalid access token because it has not been refreshed.
      I also figured out a solution for that which includes using the refetchInterval option from the SessionProvider component

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

    awesome !
    but I got issu when I refresh the token for the first time it's work but then will refresh secend time it's send the same old refresh token

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

    Great Content ! Keep Up The Good Work !

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

      Thanks, you too! I am really glad You liked it.

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

      @@SakuraDev I am already watching it for a second Time ! keep up the Good Work ! Great Content

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

    I love this tutorial! I have been looking for something like this but then I have an issue. I started following the tuorial as I did not have any issues on the backend setting up the things I set up but then I had serious issues with the Next.js next-auth. I am hitting the endpoint but then I am not getting results. I have tried to log the response to see what it contains but then I see nothing in the console. I suspect that it does not log anything because the page refreshes everytime I enter the credentials. Also my return object from the backend is different yours in the video but I was under the impression that I should be able to customixze it to do what I want to, but back to my question, what do you think could be the reason for this?

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

      Check about the useSession. If you are using the NextJS 14 with server components, it will not work.

  • @saifhaq4998
    @saifhaq4998 11 หลายเดือนก่อน

    Awesome Tutorial........... Can you make one with GRAPHQL please

    • @SakuraDev
      @SakuraDev  11 หลายเดือนก่อน +1

      Put it on my list

  • @leonrxy
    @leonrxy 24 วันที่ผ่านมา

    How can users who have been authenticated no longer be able to log in to the login page? and automatically redirect to the dashboard.
    I can't use getServerSideProps and I don't want to use useeffect because it's very delayed
    please help me, thankyou

    • @SakuraDev
      @SakuraDev  20 วันที่ผ่านมา

      You can check it in the middle ware and put your login page into the protected pages list in the middle ware.

  • @okao08
    @okao08 11 หลายเดือนก่อน +1

    How do i implement google auth using nestjs as backend and nextjs as the frontend?

    • @Maulanafb
      @Maulanafb 11 หลายเดือนก่อน

      do you get the solution?

    • @SakuraDev
      @SakuraDev  11 หลายเดือนก่อน +1

      I have a solution in my mind, but I am not sure it is the best solution. So, I will do some research about it and then I will make a short tutorial for that with the best solution.

    • @okao08
      @okao08 11 หลายเดือนก่อน

      @@SakuraDev My use case is that i have an application that requires normal email based login + social logins such as google and apple. for now since i couldn't find a way to implement it using next auth i am using another approach. But I really want your help to see if there is a better way. thank you and keep and wish you a very happy new year 🙂
      Cancel
      Reply

    • @Maulanafb
      @Maulanafb 11 หลายเดือนก่อน

      @@SakuraDev Thank u Sakura dev , i cant wait for the tutorials

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

    You are awesome as always :) ! Thank you.

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

      Thanks 😃🌹

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

    Nice effort. we have learned a lot

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

      Thank you! I'm glad you learned a lot.

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

    Hi there, Nice video... but i have a question, when you navigate into other tabs and came back, it really does the refresh token, but it does not work well while navigation into others routers and reloading page (f5, and others reloads methods) there is an method to solve this problem, to when it reloads the page it does the refreshToken, if accessToken expired? I know in other video that you made, it works but in the client side, but i want to know if there is an way to do in the server side, thanks

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

    How to use Google Provider with it? Client is not sending password to check the authenticity of the user.

  • @nidhalchelhi2655
    @nidhalchelhi2655 4 หลายเดือนก่อน

    Is this better than using passport ? and how can I fix the issue of importing the JwtService in every module i have ?

    • @SakuraDev
      @SakuraDev  4 หลายเดือนก่อน

      No it's not better. I just wanted to show how auth works deep inside nestjs. you can use passport. you can check my recent NestJs Full course for that.

    • @SakuraDev
      @SakuraDev  4 หลายเดือนก่อน

      and for your second question, I guess registering that in the app module will do the trick for you.

    • @nidhalchelhi2655
      @nidhalchelhi2655 4 หลายเดือนก่อน

      @@SakuraDev thank you for the reply, i just got one more question to ask! when i refresh the tokens.. the old access token should not work anymore right ? but i noticed that it's still working for me

    • @SakuraDev
      @SakuraDev  4 หลายเดือนก่อน

      @@nidhalchelhi2655 Yeah, we need to invalidate the tokens. You can just watch this to do that: th-cam.com/video/dUTKVYkDtx0/w-d-xo.html

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

    İ have a small and important question.
    We have an api that lists one product.
    We will ensure that the products are listed by using this api in the admin panel.
    Let's assume that we get the token information thanks to NextAuth, so we need to use it in the api as headers: {Authentication: 'Bearer {token}'}.
    When the page is first loaded, NextJS does not know what this "token" information is, so it crashes while fetch. And the products unfortunately do not appear on the screen. Is there any chance we can do this without putting a talk like if(token) ?

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

      Hi, It seems you are fetching your product in a client component. I would recommend to fetch data in a server component and the create a loading.tsx page in the same level of that page and then inside the loading just render a spinner or a loader or... The next.js will show the loading page, while your data if fetching

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

    Hey, Thanks it's realy cool tutorial!

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

      Thanks, 🙏 I am really glad you like it

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

    I 'd faced the problem of CORS Error when sends POST request by await fetch(Backend URL + "/auth/register" {...}) from the client side. Will be very thankful for answer.

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

      I solved that problem by adding `app.enableCors()` to main.ts of Nest.js project.

  • @HuyNguyen-ix4bl
    @HuyNguyen-ix4bl ปีที่แล้ว

    i have a question , we have the api for auth using nestjs why we must do the nextjs server api ? is this because the next-auth package want it that way ? i never use the next auth package so i need some explain about that

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

    Hello Sakura Dev, today I watched a lot of videos of you. But I still have some questions, please help me :((.
    I'm building a fullstack website with NextJS. I'm using NextAuth for authentication. And now I can login by credentials and some third app, but I want to have a jwt token to middleware protect when success logged in. But in my session, I don't have any jwt token. How can I achieve it or Do I have to do it? Is safe when return the id in the session? I have tried to return the public information of user in session, and they id I save in jwt, is that right?

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

      Hey. So you want to protect some pages with next auth middleware?

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

      @@SakuraDev Yes, I want protected my post api, because I return the user id in session, so I nervous that can be got by somebody, and they can do a post api

  • @sudam-d
    @sudam-d ปีที่แล้ว +1

    Hi, There is a small issue with the current Nextjs setup.
    Say that an endpoint is going to be hit on a button click in client side.
    If the token has expired, the jwt callback does not get called. It gives a 401 unauthorized. Any suggestions on how to fix it?
    I apprecaite your content. ♥

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

      Yes that's one of the edge cases. let me see how I can handle that. I will let you know. BTW thanks for bringin that to my attention

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

      @@SakuraDev Any update on this ? or do you have any suggestions how it should be handled. So I might look into this as well.

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

      @@muhammadusama7121 Hi, In the next week I will come up with solution.

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

      @@SakuraDev Awesome video, but for my project I have stumbled on the same issue. I found your older video where you manually update session, should I use that approach when hitting 401 on client side?
      th-cam.com/video/RPl0r-Yl6pU/w-d-xo.html

    • @sudam-d
      @sudam-d ปีที่แล้ว +1

      HI, I came up with a solution. Let me know whether you need me to share the code to have a look!

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

    Appreciate your dedication! I have a question about the token stuff!
    In real-world projects I think, refresh token stuff works like when accessToken expires then again call for access token (till refresh token not expire), and when refresh token expire then user should logged out meaning need to login and new refresh token add.
    But in your case, it's not working like that, may I know why?

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

      Exactly. My solution is following that approach. Is there a problem with that?

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

      @@SakuraDev I think you're doing that with client side, because i didn't get any of that idea properly from backend! That's why get confused, plus you didn't send any token in cookies through backend

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

      @@hasanulhaquebanna there are two approach for authentication in backend. Stateless which uses jwt and stateful which uses session in backend. You are talking about session based auth and I talk about stateless auth.

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

      @@SakuraDev thank you so much for clarification but with jwt we can also get both approaches right? That is what I tried to say

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

      @@hasanulhaquebanna yes we can use both. 🙏👍

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

    Hi, if i want to add another provider (like google, github) then how can the access/refresh token be generated and sent to the backend?

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

      Hi, you can do it in next auth events

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

      @@SakuraDev This one is quite confusing. Please do this one (google provider with nextjs and nestjs) in your next video. Thanks

  • @rorn-dev
    @rorn-dev ปีที่แล้ว

    i have a question.
    like we know next auth is default to 7d but when we use refresh token like this that back end token will more than 7d right . so if the nextauth session was expire what happen here ?

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

      so you want the backend tokens to be expired when next-auth session is expired?

    • @rorn-dev
      @rorn-dev ปีที่แล้ว

      @@SakuraDev no. coZ back end refresh token is keep refreshing so it is mean that the time of refresh token is keep longer and longer . back to our next auth session we just use the default to 7day so this point it will not sync . what i want is to make sure that next auth session is expire when the refresh token is expire to keep it sync
      i hope you get my purpose

  • @denvudd4492
    @denvudd4492 11 หลายเดือนก่อน

    Hey, can you please make the video where you combine custom credentials and Google Provider for example? It works cool for now, but in my app, I want to add OAuth and I can't figure out how I need to combine these 2 flows. Like we need a password for user creation, right? Do we need to create a separate model for OAuth users?
    Thank you again friend!

    • @Maulanafb
      @Maulanafb 11 หลายเดือนก่อน

      Yeah

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

    How can I add google-provider with this method

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

      I am going to create a video about it,

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

    How to proceed (delete session) when refreshToken is expired

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

      Just call signOut func form next auth

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

    Thank you for your response. But Sometimes, the tokens might be good but the user has been deactivated while logged in, which will cause the user profile to be 401. At that point, I'd like to log the user out. Please how can I achieve this? Cause at that point, the user is still authenticated but the profile details getting are throwing a 401 error.
    Thank you for all you do.

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

      In such cases, you can use the "sign out" function from next auth

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

      @@SakuraDev I can't call signout as a function or use signout in my [...nextauth] route . Maybe I'm not doing it well tho

  • @arieldebarros
    @arieldebarros 11 หลายเดือนก่อน

    Great tutorial! How do we generate random SSL Keys on Windows machines?

    • @SakuraDev
      @SakuraDev  11 หลายเดือนก่อน

      Hi, You should install open ssl on your windows machine and then run this command:
      openssl rand -hex 32

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

    Great job sir 👏

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

    Wonderful tutorial! I would like to ask a question that i couldn't understand in the NextAuth docs:
    Lets say that we have two computers: "A" and "B".
    - I log in with with my account in computer "A"
    - Then i log in with the same account in computer "B"
    I understand that computer "B" should have the refreshed token, and computer "A" should have it's own token as invalid (therefore the refresh endpoint would give an error). But how does NextAuth deals when the HTTP call inside the refreshToken function gives an error? Does it erases the cookie?
    Sorry for the bombarding of questions, and again, many thanks for the tutorial!
    EDIT: I think the problem of my question is more about the business model of the api (if the backend allows two active tokens at the same time for example), but i still would like to know what should happen if that refreshToken gives an error hehehe

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

      Hi, In this project, the backend does not keep track of the jwts, so it allows multiple valid jwt as far as they are valid and not expired. if you want to keep track of active jwts, you should store them in a db when you are creating them.

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

    My dashboard page is not protected, i can access without a session, what can it be?

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

      Hey 🖐🏻, maybe you did not configure next-auth middleware or you did not set matcher in middleware.

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

    Cant wait the next video

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

      I am really happy that you like my video. In the next video I will refactor the nest.js project and use Drizzle ORM for that. I hope you will like it.

  • @any_account-b6x
    @any_account-b6x ปีที่แล้ว

    valuable tutorial! thank you

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

      You're very welcome! I'm thrilled to hear that you found the tutorial valuable. If you ever need more assistance or have questions, feel free to reach out. Happy learning!

    • @any_account-b6x
      @any_account-b6x ปีที่แล้ว +1

      @@SakuraDev yes i have a question🙂 i followed your tutorial to the end and i pass the accessToken to the authorization header in the fetch() method. but its annoying to set the authorization header over and over again.
      do you know if we could set the authorization header on every request with the help of the middleware? i tried to implement it this way but i failed 😄

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

      @@any_account-b6x hi, if you're using client components, you can use axios interceptors. For server components, I recommend create a reusable fetchData func that only get API url. And then, in there call fetch func and set authorization header. And anywhere you need to fetch, just call fetchData func.

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

    Is it compulsory to install python while installing the dependency bcrypt?
    Repeatedly giving me the error find python

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

      I am on Linux and python is installed by default. So I can't tell you that this is necessary or not. But I don't think it needs python.

  • @Maulanafb
    @Maulanafb 11 หลายเดือนก่อน +1

    hello sakura how to authenticate nextjs with nestjs backend with oauth nextauth

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

    Hello Sakura Dev. I keep getting this error. Kindly assist: "Nest can't resolve dependencies of the UserService (?). Please make sure that the argument PrismaService at index [0] is available in the UserModule context." it happens once a save this constructor "constructor(private prisma: PrismaService) {}

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

      Hi, you should register Prisma service in the provider list of user module and also auth module.

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

      @@SakuraDev Thank you, sir.

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

    Bro I have a doubt.. while call api.. if api is facing error how to handle it

  • @conggu-nk7zd
    @conggu-nk7zd 6 หลายเดือนก่อน

    in middleware how can I get user infor, please have me, next 14 nextauth v4?

    • @SakuraDev
      @SakuraDev  6 หลายเดือนก่อน

      Hi, You can access the user with getServerSerssion() in middleware.