JWT Authentication Node.js Tutorial with GraphQL and React

Поділитися
Вставка
  • Опубліковано 28 гру 2024

КОМЕНТАРІ • 524

  • @bawad
    @bawad  5 років тому +495

    I worked really hard on this one, I hope you enjoy!
    Timestamps:
    1. Start setting up GraphQL server: 3:51
    2. Register: 19:03
    3. Login: 30:07
    4. Auth middleware: 51:13
    5. Refreshing tokens: 1:02:43
    6. Revoking tokens: 1:16:21
    7. React Apollo setup: 1:25:04
    8. GraphQL Code Generator: 1:32:34
    9. React Router: 1:40:52
    10. Login Form: 1:57:45
    11. Sending Access token in header: 2:08:20
    12. Persist session after refresh: 2:16:23
    13. Handling expired tokens: 2:22:00
    14. Fetch current user: 2:36:32
    15. Logout: 2:53:13
    16. Scope Refresh token: 3:00:04

    • @stevereid636
      @stevereid636 5 років тому +15

      Are you kidding me! This is like Christmas!!

    • @Pikoro09
      @Pikoro09 5 років тому +11

      Is really a lot better when you make projects from scratch like this! Looking forward for more. Thank you so much!

    • @castilTube
      @castilTube 5 років тому +7

      It's cool. Thank you for sharing your top knowledge with a project from scratch.

    • @juancamiloq1
      @juancamiloq1 5 років тому +1

      Awesome bro, awesome

    • @garymcbride2090
      @garymcbride2090 5 років тому +1

      Wow Ben - your hard work is greatly appreciated - thank you.

  • @Dennis-McTatten
    @Dennis-McTatten 3 роки тому +57

    0:00 Intro
    4:02 Setup TypeOrm
    9:32 Setup GraphQL Server with Express and Apollo Server
    15:21 Setup TypeGraphQL (resolvers and schemas)
    19:03 Create Register mutation
    21:00 Define User entity schema
    23:19 Create Register functionality with password hashing
    26:13 Create query to get all Users
    30:12 Create Login mutation
    34:30 Return access token
    38:40 Return refresh token in cookie (includes creating Apollo Server context)
    50:57 Implement protected routes with resolver middleware (verify access token)
    1:01:34 Recap access token
    1:02:43 Implement refresh token endpoint and verify refresh token and return new access token if needed
    1:11:01 Recap refresh token
    1:13:29 Generate new refresh token whenever access token is refreshed
    1:16:20 Revoke refresh token
    1:25:00 Begin React with Typescript
    1:25:50 Setup Apollo Boost
    1:32:28 Setup GraphQL Code Generator
    1:40:50 Setup React Router
    1:43:50 Create Register page
    1:53:57 Show all Users on Home page
    1:57:47 Login User and fix CORS error
    2:08:18 Send access token with requests
    2:16:32 Use refresh token to get new access token
    2:22:00 Handle expired access token (overview)
    2:23:52 Replace Apollo Boost with Apollo Client
    2:28:04 Check for expired access token using apollo-link-token-refresh and jwt-decode
    2:38:13 Fetch User to display in app
    2:42:56 Create Header component
    2:47:23 Make Login return User and store in Apollo cache
    2:53:18 Logout functionality
    3:01:58 Amend cookie path to only send to refresh token endpoint

  • @JoeMarGonzales
    @JoeMarGonzales 3 роки тому +145

    this gave me 5 years of experience in 3 hours, highly recommended.

    • @KamrulIslam-mi4me
      @KamrulIslam-mi4me 3 роки тому +1

      @Joe-Mar Gonzales can you share your Github repo for this project plz?

    • @FilipCodes
      @FilipCodes 2 роки тому +1

      It gave me 5 years of exp in 1.5 hours cause I watced it in 2x playback speed 😆

  • @Anonymose43
    @Anonymose43 3 роки тому +3

    It’s now 2 years ago, and still having benefits of this valuable tutorial!
    Really appreciate it , thank you very much man you saved me!

  • @diegogimbernat9253
    @diegogimbernat9253 4 роки тому +61

    Dude , u saved my job 2 times now , one with how to create tables dynamically and this , u are the man...

    • @plusk343
      @plusk343 3 роки тому +28

      Delete this comment, ur boss might be lurkin around

    • @romanext921
      @romanext921 3 роки тому +3

      @@plusk343 Its stack overflow or this. Lets be real, we all all developers here 😂

  • @CoryTheSimmons
    @CoryTheSimmons 5 років тому +28

    You could've sold this as a course and became a millionaire. Modern JWT auth (with access/refresh tokens) screencasts are what everyone has been waiting for forever. Thanks Ben!

    • @stevereid636
      @stevereid636 5 років тому +2

      Totally agree! All this integrated together in one tutorial.

    • @fadilnatakusumah195
      @fadilnatakusumah195 5 років тому +4

      he is the best one. he shared his knowledge to us for free for a better future

    • @stevereid636
      @stevereid636 5 років тому +3

      @@fadilnatakusumah195 I reckon a donation for his valuable work would be an even better future. 😜

    • @nubl37
      @nubl37 4 роки тому

      Ben is the GOAT

  • @anticom1337
    @anticom1337 5 років тому +23

    54:34 authentication is checking *who* you are you claim to be, authorization is *granting access* to resources based on who you are

    • @RonDLite
      @RonDLite 3 роки тому +1

      I was about to post the same and found your comment 👍🏽

  • @adamreinmuller8658
    @adamreinmuller8658 4 роки тому +22

    This is pure gold Ben. Really appreciate it, better than a udemy course and you provide this for free. Love the tech stack

  • @yashojha5033
    @yashojha5033 3 роки тому +2

    anyone coming after finishing that 14 hour tutorial of hyperbeast stack. I missed jwt in that. and ben has already created a video on that. awesome.

  • @antoniwrobel4041
    @antoniwrobel4041 4 роки тому +1

    For anyone facing issue with TokenRefreshLink and Argument of type '(ApolloLink | RestLink)[]' is not assignable to parameter of type 'ApolloLink[]' just update your package.json file with "apollo-link-token-refresh": "^0.2.6",
    great one Ben! Thank you!

    • @sauer.voussoir
      @sauer.voussoir 4 роки тому

      thank you! i have been debugging this thing for hours now! How did you know and reference of its fix?

    • @sauer.voussoir
      @sauer.voussoir 4 роки тому +1

      Nevermind i found it on the issues at the github repository

    • @antoniwrobel4041
      @antoniwrobel4041 4 роки тому +1

      @@sauer.voussoir exactly.

  • @dustinstone6922
    @dustinstone6922 4 роки тому +2

    I'll be honest I haven't finished this video yet. About half way through at the moment (never touched node/graphql). I am very impressed. I could never do this with what seems to be no cuts between things. You just seem to be coding this straight for 3 hours without a break. I don't think I could do this and I have been developing for 10 years. Yet only recently with react and never backend (only just started backend about 6 months ago). I was purely front end and more marketing style sites so html/css/jquery. I have expanded drastically over the last 3 years to react now python. I am trying to learn as much as possible and your videos are an inspiration of what I would love to be come. Keep it up. So far even though it is in node it has helped give me ideas on how to properly persist logins and maintain as much security as possible.

  • @coherentpanda7115
    @coherentpanda7115 5 років тому +20

    Been waiting for this since you first planned on making this course! Typescript with Postgres GraphQL and JWT, yes please! Definitely setting some time aside this weekend to build the project, thanks!

  • @brechtve
    @brechtve 3 роки тому +3

    No clue why you only have 279K subs. Thanks for you vids and sharing your knowledge, much appreciated

  • @robertnovo3173
    @robertnovo3173 5 років тому +2

    powered through your tutorial, it's now 2:30 am and I'll go to bed with a smile on my face. Thanks, Ben, for doing this!

  • @Luxcium
    @Luxcium 5 років тому

    I am happy we can finally see the face of Ben since couple of videos he don’t has the microphone in front of him I like to look at his facial expression he is so focused and I like theses videos a lot !!!!

  • @sanzhar.danybayev
    @sanzhar.danybayev 5 років тому +1

    I wanted to migrate to GraphQL since 2017. After watching this tutorial you made me do that! Thanks!

    • @bawad
      @bawad  5 років тому +2

      welcome!

  • @zachary.ramsumair
    @zachary.ramsumair Рік тому

    really impressed with this tutorial. I learnt graphQL just to go throught this and it was all worth it

  • @SushilSingh2005
    @SushilSingh2005 4 роки тому +1

    I stayed till the end. Heck I watched it twice. Exactly what I was searching for.
    Thanks Ben.

  • @skylersel8628
    @skylersel8628 4 роки тому +1

    Great Tutorial!
    Anyone following along with this having issues with porting from apollo-boost to apollo client make sure you are importing apollo client 3.x+ instead of whats listed on the migration page
    import { ApolloClient, InMemoryCache, HttpLink, ApolloLink,Observable, ApolloProvider} from '@apollo/client';
    import { onError } from '@apollo/client/link/error';

  • @mjdev-i1p
    @mjdev-i1p 3 роки тому +1

    This is ASMR for senior-devs

  • @kotel94
    @kotel94 5 років тому +7

    And I was wondering where was Ben the whole week...
    Perfect!

  • @kyleMcBurnett
    @kyleMcBurnett 4 роки тому

    Thank you. This is the first tutorial/educational video in a while that I have not set to 1.5x speed. Infact, I will need to watch a couple of times. Thank you posting intermediate-advanced content. I feel like I go from hello world examples which teach you nothing to reading man pages or RFC's, which again, you learn nothing because the material is so technical.

  • @andrewribeiro6430
    @andrewribeiro6430 4 роки тому +5

    The most enjoyable three hours of all watching UA-cam.
    Thank you.

  • @andikabahari6349
    @andikabahari6349 2 роки тому

    I finished this after the 14 hours video, and it's so much easier!

  • @tunyaa
    @tunyaa 3 роки тому

    Huge thanks, Ben! I'm learning typescript + Graphql + typeorm, because I'm leaving the MERN stack for a strongly-typed experience. This video is so condensed and precise! Hats off + good luck with dogehouse!!

  • @RockRiffManiac
    @RockRiffManiac 4 роки тому +1

    I LOVE THIS VIDEO!! Thanks so much for posting such a modern and informative tutorial for these technologies. I have been wanting to learn typescript and graphql for some time and I wanted to find someone who taught it with modern es6. Definitely will recommend to others.

  • @yitzchaksviridyuk932
    @yitzchaksviridyuk932 3 роки тому

    Hi Ben, would just like to say thank you very much for this tutorial. You go much deeper into these topics than most youtubers I've seen on this platform, so I'm really grateful for running into your tutorials. Keep it up, and all the best. 👍

  • @zindev
    @zindev 5 років тому +1

    Well done my friend. I haven't watched it yet, but just for the topics I can tell that its gonna help a lot of people.

  • @tomrobert3288
    @tomrobert3288 5 років тому +1

    Awesome. Got even better when I started using VS remote-containers on windows machine.

  • @jeromesnail
    @jeromesnail 5 років тому +1

    This is just... fantastic!
    I mean, this is the kind of tutorials I've been looking for, for months.
    I don't know shit about typeScript though, maybe it's time to sink in!
    Thank you! Subscribed.

  • @PeterAyeni
    @PeterAyeni 5 років тому +7

    Always amazing thank you so much for this indepth on JWT. Highly appreciated.

  • @fulo101
    @fulo101 Рік тому

    This was great, thanks a lot! Just finished the whole thing to help with a project, I learnt a lot and I actually think I like using react now, and also enjoy/appreciate web development a lot more.

  • @ben6
    @ben6 5 років тому +4

    Brilliant! I could go on and on, but i wanna get onto more of your videos :D

  • @diogoluis6179
    @diogoluis6179 4 роки тому +6

    i dont know why but ben face looks like he is about to start laughing at any moment xD top content, thanks Ben

  • @gddeufedhfezr1224
    @gddeufedhfezr1224 3 роки тому +1

    Feels like Spring just better 👍😀

  • @evans8245
    @evans8245 5 років тому +1

    you are the coolest ben awad i have ever seen

  • @SuboptimalEng
    @SuboptimalEng 5 років тому

    Awesome job - this is next level youtube content creation! Even my 5-10 minute coding videos are not this good.

  • @converter
    @converter 5 років тому

    Thank you Ben. Appreciate the patience and kindness in sharing this. More power man :)

  • @phamvanhan7037
    @phamvanhan7037 4 роки тому +1

    The greatest tutorial I've ever seen!
    Perfect!

  • @laurisskraucis2247
    @laurisskraucis2247 4 роки тому +1

    Legendary tutorial Ben! Thanks a lot and I learnt a lot from you. Keep up the good work.

  • @LetterSignedBy51SpiesWasA-Coup
    @LetterSignedBy51SpiesWasA-Coup 4 роки тому +1

    This is going to come in handy with Hasura. Thank you, Ben!!!

    • @bookemdanno24
      @bookemdanno24 4 роки тому

      Hi Paul - I've often wondered where Hasura best comes into play here. How are you planning to use it with the tech used by Ben in this video? Are you going to use Apollo Server to sit in front of your Hasura endpoint? Much appreciated

  • @amacpherson32244
    @amacpherson32244 5 років тому +1

    Great Video! Thank you so much for spending the time to put this together. Well worth the 3 hour watch

  • @anu1097
    @anu1097 5 років тому

    Great tutorial. I followed along and created the application. Really helped me to get my hands on Typescript environment.

  • @daniellaerachannel
    @daniellaerachannel 5 років тому

    3 hours of tutoria! my respect man, chapeau! thanks

  • @Vasu-jh5pi
    @Vasu-jh5pi 5 років тому

    Thanks a loooot Ben, hope your channel reaches heights

    • @bawad
      @bawad  5 років тому

      thanks!

  • @jacksmith870
    @jacksmith870 5 років тому +2

    So its finally uploaded. Great

  • @sushilrai2290
    @sushilrai2290 5 років тому +1

    was waiting for this one, didnt think it would be this long though :D

  • @rstorms5782
    @rstorms5782 4 роки тому

    This was an incredible tutorial. Thank you so much, I hope you are making 150k as a senior somewhere!

  • @AlexFigueiredoo
    @AlexFigueiredoo 5 років тому +1

    Really appreciate the effort you put into this.

  • @khal-elbangcola8167
    @khal-elbangcola8167 4 роки тому

    Thank you Ben for sharing your knowledge. You explain things perfectly.

  • @alenygam6048
    @alenygam6048 3 роки тому

    I could listen to you say cookie all day long

  • @stevereid636
    @stevereid636 5 років тому +37

    Man, 3hrs is a looong video. However, this topic is so important to me I'm going to work through now. Where's the donate button?

    • @CoryTheSimmons
      @CoryTheSimmons 5 років тому +1

      www.patreon.com/benawad

    • @stevereid636
      @stevereid636 5 років тому +2

      @@CoryTheSimmons Thanks, would prefer a donate button though.

    • @bawad
      @bawad  5 років тому +10

      @@stevereid636 I also accept paypal: paypal.me/freevultrmonth

    • @toyflish
      @toyflish 4 роки тому +2

      what a question, just add a resolver , create a mutation, run code gen, add the donate button and call the hook :D

    • @stevereid636
      @stevereid636 4 роки тому +1

      @@toyflish What!?!

  • @MmmMmmGood17
    @MmmMmmGood17 4 роки тому

    Thanks man! This was really helpful for me to understand the flow and differences between accessToken and how to use the refreshToken to get a new token... thanks!

  • @pooya5286
    @pooya5286 5 років тому +8

    47:05 I usually just run >Typescript Restart TS server

  • @thegreenmonster650
    @thegreenmonster650 4 роки тому

    If I could give this video a 100 likes. Thanks Ben, this tutorial is mind blowing.

  • @alexmiller1368
    @alexmiller1368 5 років тому +2

    Great video. The one thing that's missing is how to setup subscriptions and how to handle refresh/access tokens with subscription websockets, which is somewhat non-trivial. Took me a while to figure that out myself.

    • @scottreed6083
      @scottreed6083 5 років тому

      This is what I am trying to solve, too. Was really hoping it was part of this excellent tutorial. Ben, I hope you can work this into you upcoming videos.

    • @alexmiller1368
      @alexmiller1368 5 років тому

      @@scottreed6083 The basics are that you have to pass your access token to the `connectionParams` option of your subscriptions-transport-ws client on the frontend. Then on the server when setting up apollo subscriptions you can pass an `onConnect` option with a function like `(params, socket, context) => return { accessToken: params.accessToken }` which makes your accessToken available in the graphql context under `connection.context.accessToken` where you can verify it.

  • @MrPogi-lf5gz
    @MrPogi-lf5gz 5 років тому

    Thank you. Hoping for more 3-hour course like this in the future.

    • @bawad
      @bawad  5 років тому

      what should me next 3-hour course be?

    • @stevereid636
      @stevereid636 5 років тому

      @@bawad How about redoing your typescript next.js graphql course as I don't think you used hooks the first time and the next.js examples have changed quite a bit since then? That would probably be only 1hour though.

    • @bawad
      @bawad  5 років тому +3

      been thinking about doing this

    • @stevereid636
      @stevereid636 5 років тому +1

      @@bawad It would be awesome to be able to apply this to next.js 🙏🏾🙏🏾

  • @fluzis
    @fluzis 5 років тому +2

    Thanks Ben. you are my hero :)

  • @afsarzan
    @afsarzan 5 років тому

    Liked before watching. Thank you Ben

  • @nagarajay
    @nagarajay 5 років тому

    Fabulous Work Ben!! Always an admirer. Great Job too.

  • @melvinsebastian8989
    @melvinsebastian8989 4 роки тому

    Thank you so much. Superb tutorial. Liked and subscribed. Please make more and more tutorials about advanced topics.

  • @gerbenrampaart8042
    @gerbenrampaart8042 4 роки тому

    I love this guide Ben. Thank you for making it.

  • @manibarathi08
    @manibarathi08 3 роки тому

    A clean implementation of JWT🔥

  • @harshavardhannakkina1843
    @harshavardhannakkina1843 4 роки тому

    awesome, I really learnt a lot.
    the issue is the link for migration guide is not working, so, I had to figure it out myself, other than that everything is just great, thank you so much, really learnt a lot about graphql

  • @shecodes94623
    @shecodes94623 3 роки тому

    duuude, please keep up... you are awesome... thank you sooo much... greetings from Brazil

  • @אלעדר
    @אלעדר 4 роки тому

    A very good tutorial.
    Thank you @Ben Awad!

  • @iAmCracky
    @iAmCracky 4 роки тому +1

    Amazing video! Learned a lot from it in general. Would be cool if you could make a follow-up tutorial with this on how to setup a subscription.

  • @snpr9603
    @snpr9603 4 роки тому

    So complicated but interesting video, thank you!

  • @ZeeshanTamboli
    @ZeeshanTamboli 5 років тому +1

    Superb Ben!

  • @hernanbeatle
    @hernanbeatle 5 років тому

    Excellent tutorial Ben. Cheers

  • @noyou174
    @noyou174 2 роки тому +1

    1:21:02
    in mongodb its
    async RevokeRefreshTokensForUser(userId: number) {
    UserModel.updateOne(
    { _id: userId },
    {
    $set: {
    tokensVersion: { $inc: 1 },
    },
    }
    );
    return true
    }

  • @ajk7151
    @ajk7151 2 роки тому

    excellent jwt auth method. thank you very much. :)

  • @ehguacho2008
    @ehguacho2008 4 роки тому

    this is amazing Ben. thnx soooo much for this video. i'd really love if you make a 2nd part deploying this in Heroku.

  • @ronsivan93
    @ronsivan93 4 роки тому

    Great video, would love to see another one with mongoose and jwt

  • @he2he
    @he2he 3 роки тому

    24:00 What's the point of using a salt if you don't store a different salt per user?

  • @jermeekable
    @jermeekable 4 роки тому +2

    maybe a vid on how to throw graphQL on top of redis or redis-json? for using redis for beyond cacheing? Like in my use case, redis is where I store data analysis from my flask app with python for access by the my web back and frontend

  • @romanext921
    @romanext921 3 роки тому

    @24:40 you should generate a different salt for each user, use bryptjs built in function for that

  • @noddysouthgate
    @noddysouthgate 4 роки тому

    AWESOME stuff, Ben

  • @ben6
    @ben6 5 років тому +1

    installing postgres for Mac users
    you need brew: install postgres
    initdb databaseName
    Run it in the background: pg_ctl -D databaseName -l logfile start
    run it in the foreground: postgres -D databaseName

  • @amanlearnscode
    @amanlearnscode 5 років тому

    Awesome ben! have a nice day

  • @Joseph-kb7sm
    @Joseph-kb7sm 3 роки тому +1

    Thanks Ben, what approach do you suggest for doing this with a REST API?

  • @xenizs9112
    @xenizs9112 3 роки тому

    1:13:32 refreshing the refresh token may not be a good idea because of security reasons, since it is supussed that you could only get a new refresh token if you sign in with your actual credentials. tho, it may be a good idea only if the user can use a single refresh token at time I think..

  • @hoangvinh6623
    @hoangvinh6623 4 роки тому +1

    I wonder whether it's still available for XSS/CRSX attack? What if the attacker call /refresh_token to get JWT token?

  • @11Divisors
    @11Divisors 3 роки тому

    Thanks, Ben for this!

  • @newtems5479
    @newtems5479 3 роки тому

    Big like for you! It really helped me

  • @KalleZz_
    @KalleZz_ 4 роки тому

    2:04:00 Why use cors package when you can pass the exact same object to apolloservers cors option?

    • @bawad
      @bawad  4 роки тому +2

      apolloserver cors only applies to that route, I like to set the cors for all routes

  • @yashojha5033
    @yashojha5033 3 роки тому

    thank you, I finally understand how refresh token works. still had confusion how its more secure, since anyone can steal it and access the system.

  • @laurisskraucis2247
    @laurisskraucis2247 4 роки тому +2

    If you installed postgres using brew and get the following error : "error: role "postgres" does not exist"
    Run "/usr/local/opt/postgres/bin/createuser -s postgres" to solve that

  • @joracardanovsky4192
    @joracardanovsky4192 4 роки тому

    Hi, didnt understand the part from 1:15:00 with the "refresh the refreshToken". Every request to the "/refresh_token" will create a new refreshToken along with the accessToken ? Thank you for the tut by the way. Watched it like 100 times.

    • @bawad
      @bawad  4 роки тому

      > Every request to the "/refresh_token" will create a new refreshToken along with the accessToken
      yes

  • @Quenjii
    @Quenjii 5 років тому

    hell yeah! A meaty one. Love it!

  • @piotrkniaz4695
    @piotrkniaz4695 5 років тому

    Great stuff I really enjoyed it.
    Keep going :)

  • @dinialejandro
    @dinialejandro 4 роки тому +3

    I've been following this great video for a few days, doing it myself with a few variants (I'm not using graphQL at all). how would you think I should manage to keep the session valid analogously to apollo-link-token-refresh?
    Thanks!

    • @consoledoterror971
      @consoledoterror971 4 роки тому

      I stuck at the same spot like you. I was trying to implement this on to one of my MERN builds. But unable to do so. Not many good resources out there which goes through this topic.

    • @christiandasilva3590
      @christiandasilva3590 3 роки тому +1

      I would use an error interceptor like Axios. I know it's old, but I guess others could find it relevant

  • @PsychoGod9898
    @PsychoGod9898 5 років тому +2

    Would it me more secure, to increment the refresh token version by a random number to revoke it? If it is only incremented by one, an attacker could possibly regenerate a valid token manually.

    • @Quenjii
      @Quenjii 5 років тому

      How would they get a secret stored in an env variable to generate a valid token?

    • @PsychoGod9898
      @PsychoGod9898 5 років тому

      @@Quenjii The secret was in this example not very long. So a brute force attack might be possible.

    • @Quenjii
      @Quenjii 5 років тому +2

      @@PsychoGod9898 Please... If you're using this kind of secret in a production app, you deserve to be hacked.

    • @bawad
      @bawad  5 років тому +2

      @@PsychoGod9898 if an attacker get's your jwt secret, they can just create access tokens for themselves
      you'll want to hide your secret

  • @axedyson
    @axedyson 4 роки тому

    You might as well also have the token version number inside the access_token, not just the refresh_token alone, to increase security

  • @sriharshasamana
    @sriharshasamana 3 роки тому

    Very nice Ben :) I enjoyed all 3 hours of your session! How long did it take to shoot this?

  • @_dvyne
    @_dvyne 2 роки тому

    Great video.
    Currently having one issue.
    How come is he using the acess token secret to verify the refresh token, since the refresh for is the only one stored in the cookie

  • @ryan.aquino
    @ryan.aquino 4 роки тому +1

    how do you handle multiple tabs?

  • @mhamid4056
    @mhamid4056 5 років тому

    Great stuff, with richer details

  • @superkaraoke45
    @superkaraoke45 3 роки тому

    Your video was very good, it helped me a lot, but for subscriptions the token is not updated, not even when logging in the subscriptions do not work, I have to pass the token in the headers, but when the token is refreshed the header of the subscriptions continues with the old token. What should be done in this case?

  • @ColinRichardson
    @ColinRichardson 5 років тому +1

    I would suggest only putting the cookie parser on the routes that need it and not "always put your middleware first"