Next.js Authentication

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
hey everybody welcome welcome how's it going good morning uh if you're coming from i guess close to my side of the world i am in las vegas but maybe it's good evening for you maybe it's good afternoon uh let me know in the comments how you're doing where you're coming in from and uh let's have a good one today this will be a fun very interesting topic uh i know authentication sometimes sounds a little boring but i think next auth is a really really cool way to grab and get social authentication with next js and i'll show you how easy it is how cool it is let me pull up the chat what's up miguel from portugal what's up eric from brazil um welcome right on i really want to visit portugal sometime soon but uh yeah welcome everybody today we are going to uh let me go through a rundown real quick we are going to uh start up a brand new next js website app whatever you want to call it nextgs can do it all right so if you are a big fan of next.js let me know uh in the comments as well what's up jang hello hello all right so let's start pushing through there's a lot to cover today um what's up rodney from zimbabwe yeah rodney what's up welcome welcome cool so what i have here is next off and the cool thing about next off is they say it's easy they say it's secure and flexible uh you may be wondering should i use next off should i use off zero uh octa should i roll my own which is a tough thing to do right on mukesh mukesh says nextgs is what uh they use now leonard awesome what's up cool so this is exactly the setup for next auth right here and i know it sounds simple there's just like one file over here and one file over here but uh let's get into it and see how we can work it we are going to go to our documentation real quick and i have a brand new next.js application we are going to run the javascript to get this started hey kyle welcome welcome all right so now that we have that let me i'm going to split this out to the left a little bit i have chrome over here chrome's like a memory hog today uh and then we'll go to localhost hit 3000. zoomed in okay so let me show you how easy it is to set up next off js um and let's see it's three minutes into the hour right now and we can probably get this done in pretty quickly so what i want to do is i'm going to go to the next docs and i know you probably don't want to just watch me go through the docs i promise this will be over quick what we do is introduction uh the cool thing is that you own your own data in next.js so off zero all of your users are stored in their database in their servers with next off all of your data all of your users are yours to manage so what i mean by that is you can bring a digitalocean database whether it be mysql uh postgres i they have it down here mariadb sql server mongodb which we just launched by the way mongodb on digitalocean sqlite and there's also support for a third party like faunadb let's go look at the database adapters fauna there's firebase there's uh dynamo so really flexible in the ways that you can configure it what's up love cash uh tyrone good evening to you as well samuel from nairobi welcome uh shanghai from ken uh cambodia welcome i love it welcome welcome everybody all right this is cool i was uh to be honest i'm a little nervous about this one because it is authentication it's such a touchy subject uh and you always want to get authentication correct so i appreciate you all showing up in chat and showing some love i am a little nervous but let's let's keep pushing so the example code they have here is the setup code and let me show you how cool this is it's one file to set up next off and that's this pages slash api slash off slash this weird syntax right here dot js and i'll show you what that means alex thank you welcome welcome so what i'll show you what this means i'm going to copy that right there and i'm going to go over here to pages api and i'll create a new file i'll go off slash next off dot js and that is a weird syntax but let me explain what that is off zero uh next js calls this a catch-all route so this route right here if you know next.js the routing is based on your folder and file structure so this route right here would be slash api off slash and what's cool is this catch all route can say well you can pass in login and i'll understand it you can pass in log out and i'll understand it you can pass in register and i'll be good and then also call back is the other one that is going to be good so in the world of authentication especially for social auth the flow goes like this basically user clicks sign in user is redirected to let's say github is going to be the first social auth this is the first one we're going to do so the user click sign in they go over to github they user authenticates with github or whatever social you have and then github says okay let me check your credentials are you good are you not and then user is sent check that out this is a github copilot giving me auto completion and it's true so the user is then redirected back to the api auth slash callback route and then your application says oh you authenticated correctly through github let me go ahead and store your information log you in all that good stuff so this is the flow of how next auth works and this is what we're going to see pretty soon so this right here the setup is i'm going to paste in the code that they had from the beginning from their docs and really all in all the setup looks like this you could get away with just let me show you this right here so we have next auth and then it's a providers array and this array is the number of providers that you want to provide so let's say you had github let's say you had google twitter all that good stuff and i'll show you right here if we go back to authentication providers in the docs this is the absolute number of authentication providers you can do there's even basecampbell.net and the ones you expect facebook gitlab github google twitter all that good stuff so to do this let's go to the github one where is github i don't know my alphabet anymore there we go we need two things we need a client id and a client secret and both of these we go get from github itself so if you've done authentication uh what's up ruthie welcome welcome if you've done authentication most of the time the hard part of authentication when you're using like stuff like next off and off zero isn't really the setup one of the annoying things is going to go get your credentials so here we have github we have to go get a github id and github secret and the thing about the next off docs is they don't really show you how to do it so this is a trial and error thing that you just have to get used to working in authentication we'll go and go to github.com settings slash apps but i don't really want to click it i want to show you where it is so you like mentally know how confusing it is to get to so here i am in github over on the top right you go into your settings down here and then down here it's all the stuff you would think maybe it's under applications nope it's under developer settings and then you have your github apps right here so now you can create an app and then use it to authenticate users and let me know if i'm moving too fast or if you have any questions please throw them in the chat and as always this will be recorded and put up on the digitalocean youtube channel after this so i'm gonna create a new github app and this is actually relatively easy compared to the other authentication providers just wait till you see google's that thing's a doozy so github app name we'll call it um hi vo you can write the description for your app and all that stuff home page right now is going to be localhost 3000. we're working locally and then you could probably call this like local and then down here a dent identifying and authorizing users so this is that callback url github needs to know where to send users back to so that'll be http github.com api callback slash github and the reason i know that is it's coming from the next off docs um somewhere in here is how you configure the callback all right so give me two seconds so now that we have the callback set up when we go down here post installation we don't have anything happening here we don't need web hooks this is a great way to let's say as soon as a user logs in you can hit an api maybe track some stats set up their account and stuff like that but we don't need to here uh yes mukesh you are right callback should be localhost you are right sorry uh good call that saved us a good amount of time on debugging cool so localhost 3000 localhost 3000 uh it's getting sent back to our local application and then down here this is where it's cool your app can only have specific permissions so um this is really helpful especially because github you don't want to authenticate an app and let it go and do your actions do administration on let's say your issues maybe you do but when you're authenticating through google make sure you always know what the app is asking for for our app let's say we wanted it to be able to manage projects there's a ton that you can break down members and stuff we don't ever well for our application we're not going to be managing members or their github plan or anything like that user permissions maybe we can manage a user's email addresses and see that that isn't required to see the logged in user address so we don't need that one we'll just leave this as let's just go grab the profile and then let's click create github app we have our client id right here and now let's generate a new client secret and now we have this right here so after this tech talk i'm going to delete these things but the cool thing is that this didn't really have any permissions right like it didn't have access to update repos delete repos and anything like that so i'll go ahead and copy this client id and we don't want to put this directly into this in this file because this is in source control so we'll create a new dot emu.local to github id is equal to that and github secret is equal to we'll come back over copy this thing right here paste there okay so we have that now and our next auth is going to pull that in so that should be good let's see if we can actually log a user in now that's all it took for setup is this one file and two variables uh eamon with the question should we store uh the secrets in hashicorp vault or some other cloud key store you could i think that might be a little uh strong of a solution what you could do is just put it in environment variables uh store it as encrypted in your environment variables and i think that's solid enough miguel yeah good question would that work well for local development uh it would probably take some setup definitely more setup than uh an environment file is but uh you know it all depends on your projects okay so set up next auth.js we set up our client id client secret we need to restart our server because we have new environment variables and let's go in index.js let me just hide all of this we don't need the boilerplates okay so this is all we need uh we don't need all that fancy stuff from xjs gives us uh and then let's start working with this so that we can add next off so we've installed next off we have set it up next up is oh i'm sorry i'm missing one thing out of our environment variables we need to set up next off url and brian with a fantastic point right here we should go into our get ignore and make sure that that dot env is not committed to source control to github and the cool thing about next js's default git ignore is that it already has down here these files are in the git ignore which is interesting because there's not a normal.env so nextgs definitely says hey you should probably use env.local instead of env uh eamonn says i think we can have conditional on production yes you absolutely could down here you could do like a process dot env dot node environment all right is equal to that or a ternary to [Music] grab something else right but yeah definitely a totally viable solution there um where was that index.js let's go set up this thing right here and let me show you how to use authentication here so we're going to import sign in from next dash off client and the way that we do this is we also have to grab a react hook called use session and now let me show you how cool this is const session loading is equal to use session and now the user is stored in session as response user is equal to session.user so just like that we're able to go grab the user's information with this one react hook really nice there and next up let's actually create a button that does a login so we'll say it hub co-pilot is so good look at this just giving me the code you need um but it is docked for points because it did google and not github so this is who you sign in on click we do that function called sign in that came from this import and that should be good enough so we'll save that we'll go to our app local host resolve next auth oh i didn't install next off come on chris let's do np npm i next dash off that should have been step one right all right so let's install next off and while that's there npm run dev again and here we go everybody fingers crossed we want a github log in here okay so we have hi everyone and then i'll click sign in and check it out we got this nice login page from next off we didn't even have to set it up or create the buttons or anything and you can style this yourself if you want but this is the default styling and i'll click sign in with github it takes us over to github it says hi deal local is the name of our app by the person that created the app and here are their permissions these are the default ones right if you verify that you're yourself act on your behalf and then the only thing that i can do is manage a user's profile settings so what i'm going to do here is authorize high dlocal and now we're logged in but nothing is going to show because we haven't shown anything yet so let me go do that let me move some things around [Music] um okay so let's go over here and let's just console.log this user right here and let's see what happens we have an object there's the email which is the personal email i'm using on github and uh my user image and my name so let's go ahead and use the image and name here so down here i'll just say user dot image but it needs to be an image source is equal to and we'll do h2h1 all right let's go check that out there we go image but let's put a width on it width is equal to maybe 200 uh too big 50. there we go so we have image name and the sign in button which shouldn't be there anymore so let's remove that but how cool is this right we were able to add github logins all in i mean we're at 20 minutes right now and all in one file and a couple settings so let's go back to index.js we're going to grab sign out as well as sign in and then down here we're going to say only show all this stuff if there is a user and then if there is no user finish typing that there we go if there is no user then we have a sign in button if there is a user then we are going to need the log out button and there we go and this is just next.js's eslint saying hey you should use the next.js image component which is fine here how do you know what user info you have available right now since we don't we didn't provide any extra authentication stuff it just had that information that we console logged right here um but to get more information where's the next docs not that one [Music] that one sorry i can't see my tab so i'm like i have to click around um uh where is it in here sorry i can't remember where it is but in here there is a way to like see what each provider provides you but the cool thing about next off is that it standardizes a lot of that so you'll at least at the very least get uh this stuff right here so now we have the sign out button let's click sign out there's an error here cannot read property user of undefined so it did log us out but the problem is over here this doesn't exist so we'll do like that right there okay so that solved everything so we have hey everyone sign in click that sign in with github and it already remembered that we signed in so we don't have to click anything on the github side and then just send us back and then we'll click sign out super slick and then a trick that i want you to know is if you just have one sign in option like github you could just say github right here and it will go ahead and go straight to github instead of well it should have come here okay maybe that changed but yeah so the next step to authentication that you might be wondering is okay well now that we're authenticated how do we hide and show resources based on if a user is authenticated so we can do that by going into let's create another file over here and we'll call this dashboard.js mukesh is finding all of my uh typos dashboard should only be for logged in users okay so here's our dashboard page and uh daniel and mukesh have found my error in the other example yeah i put it in sign out come on chris so let's put that down here and uh let's prove that i'm not making up random things sign out here and fingers crossed sign in go straight to github check it out didn't even need to have that secondary screen it just logged us in and sent us all the way back so let's uh go ahead and right now we can go to this dashboard page dashboard should only be for login users but i was able to get here even though i'm not logged in so how do we block somebody from logging in to a page we can go into this dashboard.js and just like we did from the index.js we can import view session and get session use uh import from next off slash client and then down here we can if use that uh hook session loading is equal to use session and then if no session if not loading and no session we can return a redirect which to do a redirect you would go get const router from use router and then down here you could like return router.redirect um i'm forgetting what that syntax is let's see push i think it is router.push or replace one of the two there we go so that's a way that you can block somebody from getting to a dashboard route or some other route and mukesh mukesh i love this you're like giving the the pointers what is that wrong import um request is giving the correct pointers and questions as they come up this is perfect so the problem with this setup is this is client-side authentication which means you're checking to see if a user is authenticated after they already got to the page so you sent them all of the the payload and the data for dashboard.js and then checking which is a problem because they shouldn't even be able to get to this section at all so to do this in next.js there's export async function getserversideprops and everything inside of here disregard copilot uh sabin sabine is uh absolutely correct get server side props is the way to do it in next.js i love the chat everybody's just like guiding me along so i don't have to do as much work this is fantastic but yeah you're all uh authentication experts in chat so this is great get server side props is the way to do it so use session is going to be a client side hook next auth also comes with a server side hook called get session so these are the two hooks that you need to know about next up is use session is client-side and get session is server-side and that's the surface of its api it's really simple to use so down here we'll say const session is equal to await at session and then you're going to pass in the context so from the context from getting everything from the request it'll go ahead and be able to authenticate us and then you can return props session and then up here i no longer need this used session i can just delete that i don't need this router stuff i can delete all that i can delete that delete that and pull in the session here now const user is equal to section.user you're wondering hey chris where is the redirect happening like is it going to redirect us uh let's go see if we go to slash dashboard now well that happened again so let's do that um interesting hold on so the authentication happens server side here uh one thing you can do is do a redirect here but uh what's interesting is the la the docs actually say you should do it like this if session turn um protected info here i'm just going to copy sabin's uh code over here so the redirect is here if no session just like that turn redirect to the login page super cool and then up here this is what they wanted to do i'm not the biggest fan of this setup right because you're still getting to the actual component itself which is what we're trying to avoid so let's just not do that and i put an extra one there what's the error here unexpected character yeah no worries but i think that should have been good am i absolutely missing something do i i don't need the brackets can anyone see what i'm missing i this is the if statement this is totally valid if if you only have the single um statement after that look that's valid now that's weird uh yes seven is right maybe copying and pasting from youtube chat did some weird stuff let's look it looks okay so let's try this let's refresh um well let's go google for redirect max js redirect sorry everybody from get server side props okay well i don't really want to dig through that so maybe it's this one nope nope get server side okay maybe it's let's just copy that thanks everybody for helping out uh let's see redirect delete all that syntax right return redirect destination slash login or just send them to the homepage permanent false okay let's go back brian thank you for saying that because i always get a little nervous when it's like live coding everything's going wrong so check it out dashboard it sends us immediately back to the homepage there we go um so that's how you can protect a route from the server side you could probably clean that up a little bit too yeah yeah cool if you like the single line uh syntax alright so that's how you can protect a route next up here is how to protect an api route so an api route is going to be over here under pages under api that's large enough under api and let's say this hello.js which is a default when you start up a next.js application let's say we wanted to protect this well we already saw the tool that we would use for it we are going to use import getsession because this is the server side one that we can use from next off slash client and then in here we can just const session is equal to get session equals rec copilot's so good so we're passing in the request into this git session method hook uh function sorry and then it'll go ahead and log it says so if we have if no session we can return res dot status 400 dot send unauthorized uh else it'll get to this point and that should be good so let's go here let's go to slash api slash hello um that shouldn't have happened let's see if no session return res dot status send unauthorized i think i missed some syntax here pass it in as an object refresh still no problems when in doubt console log ah you i i gotta i gotta like send you all stickers or something you're all so helpful uh what's up ali welcome sabin i'm hoping i'm saying that name wrong yes it returns a promise good call yeah i hovered it it returns a promise therefore we should async await the thing so refresh unauthorized thank you everybody [Music] gosh this is i'm sorry this is way too many mistakes that i'm i like to make but uh thank you all for helping i really really appreciate it you're all awesome i'm definitely making this a positive experience uh yeah so we're able to protect this api route now and let's see the session was null when it started because there is no authentication there so let's test everything that works let's go here we'll click sign in we're signed in now we should be able to see slash dashboard nice we're there and then we should be able to see api slash hello and we are getting the json response we expected if we go back here we should see yep all that information there awesome yeah uh that's a great way to put it simon a lot of this so far has just been what syntax right uh i got a url wrong i'm not trying to like highlight my errors but i got urls wrong missed an async await put the thing on the sign out instead of sign in so a lot of this is just syntax but really if you look at the surface of the code of the of how much code we had to write very little places for errors um and as you all demonstrated really easy to find them right okay so let's see we're at 40 minutes in the next part that i want to talk about is something i hinted at at the beginning and that's bringing your own database carlos thank you for that it is uh real life i i promise i put together a demo app for this and i ran into all these problems then too and i still ran into them so but it's all good this is still a much easier way to do authentication than rolling your own passport uh node server right uh let's see ali best way to learn the js errors is uh yeah doing it on a live stream okay so let's uh let's bring a database in i'll go to digitalocean sign in here ah and uh here i am in my digitalocean database let's go to databases dashboard uh and i have this one right here for postgres uh what you can do though is go create we'll create a database and next off supports all of these which is really cool i'm going to go with postgres here you can start on the 15 a month plan pick your region that's closest to you you and your users name it and create database cluster daniel that's a great great comment right there let me bring that up in a second so what you can do is let this spin up and once you do let it spin up you can do all this getting started stuff you can secure your database so you can restrict the inbound connections really helpful when you have a droplet or an app that you only want to have access to this database and then we can continue to do it later and then we get our connection details right here so this is our password this is our username hostname port database ssl mode all that good stuff while it's spinning up i already have a database set up so i'm going to go over here i'm going to go to this next auth one that i had prepared and just like we saw we have our credentials so i'm going to go ahead and go into my env.env.local and i'm going to paste all those in i'm going to copy this uh and i'm going to paste that in right here and i'm going to do it quickly so nobody just like grabs my password and does random stuff actually i'll just move it off screen cool all right so we're back to here we have all of those variables in place next up is adding a database to next off so the question earlier let's do kaushik's question we'll have does automatically automatically set cookies to preserve session so right now since there is no database or anything the way that the session is preserved is option number one which is jwts so json web tokens and that should be visible if i go to my app inspect we should be able to see it under application somewhere in here should be our json web token i don't think they did local storage yeah i don't think it's local storage it might be session no yeah so it looks like they threw it into the cookies and it's right there the session token this giant thing sabin we should have just had you teach this uh this tech talk so um yes perfect information it saves the jwt in cookie right here uh you can add more to the cookie like information um from your next auth configuration so it does option one jwts it can also do option two two which is uh database sections and uh yeah so let's take a look at what this looks like so we have our providers in our config great questions in chat natalie uh nathalie i will get to that the database is gonna be an object and what this looks like right here is i'm just gonna go grab all this stuff from my notes you're essentially just giving it all of the credentials to your database cool um so rob what do you mean by that because we have the provider's credentials oh are you saying the credentials provider uh let me talk about that in a second so let me go here i'm going to have our database here i'm going to go over here let's sign out something happened okay so rob let me check on that in a second something happened let's go look at our error postgres package has not been found so we need to npm install pg so when we do this let's go here actually let's npm install pg so this is the postgres database package that we can use to interact with a postgres database if you put in type mysql it'll ask you to install mysql same for mongodb and the other ones start this back up um bowdy what theme is this this is monica pro okay so i had this error in testing and it like would sometimes go away i just want to try something real quick i think it will have the error okay so what this is saying is it's an authentication issue sorry let me get to the final one authentication issue with postgres so we will need to connect to the postgres database with a certificate um yeah hold on everybody i see a bunch of questions so let's try to get this working so the way to work with this as a certificate is you're going to add this ssl object and once we have this ssl object you want the cert so let me go grab the cert real quick i'll go in here download ca certificate i'll drag this over here and sorry i know i'm speeding up but we are coming up to the end of this so let me move this into uh brian yes this video will be available later so i'm dropping in my certificate here this is something that you don't want to commit to your github repo you can add it as an environment variable later so i'll go over here and let's just make sure that this is logged pointed to the right spot um okay maybe let me remove that and jang has a great point npm run dev i think i did because i had to for the postgres thing right all right let's give it a shot sign in nope okay so it does want the ssl cert let's bring this back all right let's try this out and internal server error come on fs is not defined of course it's not because i did fs that read file sync come on all right we're close honest we're super close to this like doesn't even want to go anymore oh it does it did ha okay so it wanted the ssl certificate to log in so that's fine we sent that in um but now we get to test this out because we just used postgres to do the login right and i said earlier that next auth is really cool because you are the uh you're the person that gets to manage your user information and i have table plus open which is a database explorer tool and check it out i have under here users here's my user let me i can't zoom in you [Music] yeah sorry for the small font it's a database tool um so yeah i have my username right here i have my image all that stuff you can see the sessions that are attached to said user so how many times they've logged in when you can see their session token and now the session is stored in the database and you can still go back to jwt session storage if you like you just set that up in your settings and then under accounts here is the interesting part you have oauth with a provider of github and you can see all of their like github ids and all that stuff right there so that's what i mean by saying you are in charge of your data you you're not sending your user information over to somebody else like off zero um and all that stuff where are we at 51 minutes in so that was a good amount of stuff and again thank you everybody for helping out uh let me look and see if i missed any questions daniel what would be interesting is how you'd connect the social login to user data in the application database social id to database user the docs actually have a really great write-up on this is it under faq they do a great write-up on here when i sign in with another account with the same email our account's not linked automatically they do a great write-up essentially what they're saying is authenticating that way is not secure because some some social providers they don't require you to verify your email so for this to work they would ask you to verify your email across all social providers which is they can't enforce so um definitely give this a read through they do a good explanation of that paste that link in chat let's see um brian i am using uh table plus to check out the database stuff the little elephant icon uh miguel says in the accounts table how do you differentiate between uh users versus accounts yeah i i found that confusing at first it seems like accounts is specifically for the social provider and users are just for like basic user information it sounds like to me that the way that they're linked is this user id over here i think it just so happened to be that they both ended up being id of four which i guess called call it bad luck but um yeah the user id right there i think is how they link it if that was your question uh so rob asked earlier the provider credentials so if i go to providers and go down here credentials is one of them credentials is an interesting one because out of the box next js really focuses on social authentication um but if you have like let's say username and password and your own specific database the way that this works is you go in and you're supposed to be able to yeah here we go here's your credentials you basically tell it what type of credentials you have username and password and then you give it a function to say how to how do you authorize that user against your data source um a little bit more setup that's why i didn't really touch on it in this talk i actually had the google social provider planned for this talk but it seems like we ran out of time but that's all good uh there was a question earlier also of refresh tokens and expiration under tutorials right here there is refresh token rotation over on the right over here if you click that scroll down um there's a lot that you can do to excuse me there's a lot you can do when you're customizing your next auth object so let's say providers is here callbacks is something we didn't touch on but something you can do so these all run when like a jwt is successfully parsed there's callbacks for like sign in there's callbacks for sign out and what this does right here is it basically says when you go grab your json web token you need to check if the date is expired on the token and if it is then you go get a new token so that's one way to do it [Music] and again if if you are having trouble with this package as i mean as you saw in this talk itself i had some problems i mean authentication is not an easy thing definitely read through the docs there's so much good information in the docs even just side notes where they just explain random concepts of authentication a really great open source package i highly recommend checking out the docs but yeah i think that'll wrap it up here um we we made it through everybody authentication is never a simple subject it's always going to be something that you want to take care of you want to be as secure as possible so thank you everybody for joining up thank you everybody for helping point out some mistakes that i made uh lewis good question the the docs recommend well the package itself stores it in let me go look under application under cookies and it stores it over here under as a cookie the session token and then the session token will go ahead and go back to like grabbing your user information as far as security goes on this uh you'd have to read up on the docs i haven't really read into that too much i wonder if they have like an faq as far as security yeah and also that question probably isn't specific to next author it's more of a are cookies safe to store tokens or session tokens in right right on carlos thank you for joining miguel does next auth interact well with react i don't think it does somewhere in the docks it says no because the let me show you this real quick that get session which is a server side function doesn't really have a place in react it doesn't make sense in react um you could probably try the youth session in react but i'm not sure how that works out i would be interesting to find out uh yeah louis thanks for joining carlos thanks for joining let's wrap it up here jen you're very welcome thank you so much for the help uh sabin thank you so much for the help babatunde thank you so much i really appreciate everybody being here that was a fun one will the code be open sourced um i don't really have i i'm not sure if i should push this to github because it's so sloppy the next js docs have much better like full-size sample apps for you to check out nathalie you're very welcome sabin see you next week we also have cloud chats on thursday and tomorrow which is gonna happen tomorrow morning well tomorrow uh on this youtube channel what are we trying next so i have my next three talks scheduled um oh i don't have the dates but the next three are uh what's new in app platform our platform as a service and the next two i'm excited for because i love these topics getting started with react and getting started and being productive in vs code uh eric thanks so much for joining mukesh thanks for joining um daniel some more authentication and the callbacks that's a great option token rotation also a great move yeah lots of fun right on thank you everybody for joining thank you so much for helping me out uh have a great rest of your wednesday and i'll see you next time
Info
Channel: DigitalOcean
Views: 2,463
Rating: 4.9215684 out of 5
Keywords:
Id: AdcktATbd-I
Channel Id: undefined
Length: 60min 3sec (3603 seconds)
Published: Wed Aug 04 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.