Towards Django Two Factor Authentication Integration

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
hello and welcome back to another tutorial this tutorial is all about getting started utilizing two-factor authentication with django so here in this tutorial we're going to download and install the django two-factor authentication application and then go through the process of integrating it within an existing project so this is the package that we're going to run django two-factor authentication so have a look at the instructions if you want to go through that and have a look at some advanced options we're just going to be setting up uh the two-factor authentication here so this is the example that they provide us or the demo account so i've signed up so the case of this is what we're going to set up we're going to have the login we're going to integrate this within our own login system and then once you've logged in you'll then be able to set up the authentication so we'll set up the area where users can enable two-factor authentication within our project and then we go ahead and we only have token generator activated here so that's where we have this classic example where we'll be generating a qr code like this we then grab our google authenticator tool so this works with the google authenticator mobile phone application we need to scan this qr code you might already be familiar with this type of process and then we need to enter the code to enable two-factor authentication within for our for our account and then once we've done that we can then go ahead and then when we log in again so i might as well show you so let's go ahead so i've scanned this on my google authenticator app 496. we can press next so now that's added i'll go back to the profile i'm going to log out and i'm going to log in again and this time i'll be presented with my two-factor there we go so now i need to enter the token from my google authenticator so um five four seven six nine three and then press next and there we go we've logged in again so that's the process that we're going to go through utilizing this um package we're going to install it now and integrate it within our own application so you're going to find the code if you want to follow this as we've completed it in the tutorial here you're going to find the code in the description so you can go ahead and download that start up the application uh you'll need to pip install the requirements and then you'll be presented with this page or this project that's kind of half built so this project here if you want to access the admin area you can do and the username is at a.com so i'll quickly show you a.com and the password is going to be admin so that's the project files that you're utilizing um let's just uh log out so you can see that to log in i simply needed my username and password so let's go ahead now and go into the project documentation or the project and let's start actually installing so the first thing we need to do is actually install the django two-factor authentication so let's uh open up the instructions now it's worth noting at this point the tool that we're actually using and focusing here is from the django otp application so we could have just installed this instead but this is a little bit outdated now and in some respects this django two-factor authentication is has moved this forward slightly um in this integrated some more features on top of this package here on the django otp package so maybe in the future i'll provide an example here which is going to be more lightweight if you just wanted to use the two-factor authentication only so like i was suggesting this two-factor authentication package here this works on top of the otp package and it adds some more features which we're not going to feature in this tutorial we're just going to focus on building that uh facility that um two-factor authentication that i showed you earlier in the preview so that's enough flicking in between things so let's go down uh to the instructions let's crack this open so you can see that first of all what we need to do is uh pip install so let's just go ahead and close the server and then i'm not going to do that so we need to pip install so pip install january two-factor authentication there we go so there's a few things that get that is installed there's a list here some items that will be installed uh one of them no like likely to be what i've just mentioned um so they're django otp so it's installed a few packages there now there's another package that it's required that's required here so for example if i were to try to start this up so let's just follow this so we need to also add this to the installed apps let's just do this first so there's a number of things here that's um by default and required so in the sum package here that we're working with you'll see that we have a core application inside of there is my settings now your application that you're integrated in you may not have this kind of setup here i've put all the settings inside of this folder here so if you're working with this package um this code base here you'll find you need to go into settings and then the base so this file here is the equivalent to your settings.py file okay so at the bottom then we'll add this piece of code oh no sorry what am i doing uh we need to go into the uh installed let's get drops down we need to go into the installed applications so this is a two-factor authentication 2fa so these are all the apps that also packages that we need to install uh so let's go back to the instructions you notice it also has a middleware so this needs to be below the auto authentication middleware so let's um set that up so this is going to be for the um the tool that we are using uh so let's just go back into the code so it needs to be underneath the authentication middleware there we go so that's the otp so this again is from this django otp um package so what we'll do first is we just get it integrated as in we can use it and then we go ahead and think about some a few kind of integrations um mostly kind of front end trivial i say trivial not trivial front end kind of ui changes that we want to make so here it says that we need to point the login now to the two-factor login so let's first of all just start this project project up before we do that so let's run the server so you can see that it's asking for module phone numbers so it just happens that um there looks like to be a custom phone number field and that's a good um introduction or that's a good idea for a tutorial later on uh so let's go ahead and just uh pip install this so what's happening here they're obviously using some sort of custom model field that requires um a phone number so this is something that we can build a custom um model field maybe in it like i said another tutorial so let's go ahead and pip install that and then we can go ahead once that's done i don't know why it's taking so long uh so let's just go ahead and just run the server just to make sure it runs so it runs okay so let's just remind ourselves of what we had before so this was the login before so what we need to do now is go into our settings again and add the login url so let's go ahead and do that so that was in my base so at the bottom here i already have a um a login url so this is the url pointing to the actual login page for my site so i'm just going to comment that out add a new one in for now so you can see that's pointing to two-factor login so this is a reference point uh to an app say in my application two factor and then go in and have a look for the login url so what i need to do now then is set up the urls so that we can point towards that so here what i'm going to do again in my core um you can see that i've got my uh urls here so in your core package your django kind of core package go to the urls and now we need to integrate our the urls as specified so we're going to bring in all the two factor urls first so let's uh do that first and there we go so that makes all the urls now available here so i can add them into my url patterns and now i can just go ahead and add them into the path and then we can see all the then we can go and see all the new paths that are created now just for now i'm going to put this and just make sure it's above account because the two factor urls um it does extend from account so that's something to be uh careful about uh so i'm going to put that above the account at the moment so let's do that unless uh let's run the server and see what happens so let's just put in a random thing here okay that's not gonna work okay so you can see here that um what was being provided by the django two factor package you can see all the urls that have been provided and they extend from the account account slash so two factors set up qr code etc etc so if you're wondering what we just did then um the actual application this package so it comes with some pre-bet made urls and we've just basically imported them into the url page or our url uh code and then we've added them to the path and this then generates multiple paths this is basically just an include like we we do with the other packages so this is just a package and we're just including those urls um that have been pre-made by in this package here so you can see now that all these urls are now available and then one of them being the account slash login so what you'll find now we've made those changes if we go to the account and log in we now have the new login we have now the new sign in you can see that has the back and the next so let's just double check to make sure we can still log in you can see that it says no such table otp static static device so what's happened here is that because we've added some new applications in the settings and base at the top here we added some what we forgot to do was we need to now migrate because what's going to happen is that this application is going to build some tables that we're going to need to actually run this package so let's go ahead and quickly do that so obviously that's going to be a a migrate there we go so you can see there's a number of tables that are being created for this and we're going to those shortly but let's just go back into our run server and let's just uh see if we can log in there we go so we can still log in we're just using a template from this package but you can still see that you can still see that we can log in right so now we've got that let's just go into the the admin here um you can see that there's a number of new tables are being created uh so the django two-factor authentication table the otp otp static table and the otp topt totp table so the really the only one that's of any interest here is the totp devices to begin with because let's have a look at the fields um that we have here so you can see that we've got username and name so basically when we set up in a minute our two-factor authentication we're going to need a username and we're going to need the name of the device so users could have multiple devices that we can set to multiple keys to allow them act to access their account but how this application is set up by default is it automatically puts a name of i think default here and it then only allows the user to have one device connected to a key which then obviously then is connected to your google authentication app on your mobile phone so you can see that there's some other parameters here we've got key step two digits tolerance so these are all parameters if we were to set up our own two-factor authentication and wanted to work with for example the google authenticator we would need to understand these in a little bit more detail and to apply them and in to kind of summarize what's happening here is that these are the tools that allows us and drift for example because our mobile phone remember how this is working is it's utilizing the time so if the time isn't if the time changes somehow then your application or your two-factor authentication app potentially is out of sync to what was originally synced when you created the actual code so this does rely very much on time to actually generate codes etc because on your mobile phone application the code is going to change every say 30 seconds and that can be you can see we've got a step here that can you can change that so for example the the number the unique number will change every minute for example so that can be changed the timer but if you will look on if you have google authenticator application on your phone you know that um the numbers change every 30 seconds i think it is and by default so we're not going to go into any more detail there we just want to set this up and get this working and integrate it within your package and then you can spend some time have a look at the documentation it will take and give you more details here now this is kind of abstracted from you or from the user the user doesn't get to see any of these details so you can kind of set these up manually if you wanted to at a later point so uh saying that let's come now go ahead and utilize some of the other urls so what we can now do let's have a look at some of the urls that are available so without doing anything else we can just use some of these because all these urls have been created attached to templates that have been pre-created by django two-factor authentication package so um let's go ahead and have a look at the account register setup so let's go into the setup the count two factors set up that's what we're looking for so account two factor setup that takes us to a page now that asks us to enable two-factor authentication so you can see the problem here is that we need to make this lined up to our existing project so we're going to need to go in and we go through this process in a minute and i'll give you a few tips on how to kind of get this integrated within your project but let's just set this up so i'm logged in as a user let's press next and you can see that i've been generate i've generated a a qr code so i'm going to get my google authenticator app now on my phone i'm just going to scan this code and then that should then get be added to my google authenticator which it is so then i can go ahead now and add in this token so 0647.2 and then what's happening now is i'm going to authenticate this code with this number to my phone so essentially i'm just making this check to make sure that my phone and the numbers they're supplying are in sync with what's happening in the server here so i press next it says you've been authenticated so i'll go back to the security page this is now is like the home page for setting this up and you can see here you can now disable two-factor authenticated authentication so what's happening in the background in terms of authentic disabling and enabling if i go into the admin area here and again go down to the top t devices you can see here that when i go into admin i've got confirmed so if i disable that then it's likely that then the totb device has been disabled so let's just do that let's um let's just uh turn this off and press save okay so i'm just gonna log out and log back in again so you can see this time because i've disabled it it doesn't work or it doesn't um i'm not asked for it so you can see that's what it means by enabling and disabling it's just going to remove that option there so i've enabled it back i've enabled it again on my account so let's just try one more time to make sure it works and okay so i'm being asked again for the token right so you can see how it's working um within five minutes i've now created a uh a two-factor authentication uh application of integrated two-factor authentication application within my django application so if you are familiar with two-factor authentication you're probably also familiar with this idea of backup tokens so typically when you have a service providing two-factor authentication you can also generate some backup tokens so if you don't have a device with you you can access your account using the backup tokens so if you forget or if you lose a device you basically use these backup tokens to get in disable two-factor authentication so that you can then wait until you get another mobile phone or whatever and then re-enable it with the new code etc so that provides a way of users accessing their account if they lose [Music] or disable or uninstall sorry um the google authenticator application so if you just go into show codes and generate token this is from the account two-factor uh dashboard or home page for the account security so show codes generate token and there we go so these are some tokens that you can utilize so the idea is that you need to back those up on a wherever you back them up and then you can access your account if you lose or forget or uninstall the google authenticator application so you may be wondering why you i was looking at a different screen than you were when you went to the login page uh when you installed this application so you would have been presented with this screen here so i just set it up earlier so you could kind of see the whole thing so now let's go into the templates and now start to integrate this package into our existing django application so the message here is referring to the fact that what we can do here is we can go into the django two factor authentication package go into the two factor folder here and we can then go into the templates two factor and what we can do is we can place this folder we can build a new table a build a new folder called two factor and we can place all of these templates within that folder within our project so here for example i'm going to put into the account folder i've made a i haven't made sorry excuse me i'm not going to put it there sorry in templates let's start again so in your templates it's looking for a folder called two factor and there we go so what we're going to do now is we're just going to download all of those so we just need to download we just need to download this okay and we're just going to basically put the the two factor uh templates we're gonna put all these templates in our project right here okay so i've gone ahead and extracted that folder that i downloaded and then i've gone ahead and i've now added all of those templates inside of this two factor folder here so when i go back now to my application and refresh you can see that it's still saying two factor underscore base to start this page remove this message uh so it doesn't seem to be working right this second so two factor is base okay let's uh just uh restart the project let's give that a go and let's go back and refresh and it seems like it's still actually showing that so um let's see if we can actually see if our two factor base is actually working so you can see that we've got this message here so let's go ahead and just remove this and this so we've got a little bit more room here to work with so you can see the message that's being displayed right here so let's just get rid of that message now let's save go back and refresh so clearly we are now utilizing those templates that we downloaded and we placed inside of our django project so what i'm trying to do here is i only want this component here i want to integrate this within my existing project so you can see that this content wrapper block is is pretty much all i'm i'm going to want to potentially utilize in the base so let's just get rid of everything else let's just bring it down to its uh minimal components there so refresh you can see it's a that's kind of the minimum components potentially that i'm going to utilize there so let's bring the project back okay so in my project it's going to obviously be completely different potentially to yours so you can download this code base and have a look at what i'm doing so let me just take you through how i'm going to do this so let's remember well so in my project not let's remember in my project my templates in the account i have a login.html so that was my original login page so you can see it right here and you can see what i'm doing i'm using and i'm assuming you understand django template system i'm extending this file uh from the sub base so what i'm doing if you're not familiar with django templating i'm extending so basically i'm taking this file here and i'm injecting the code from my login page into here say so you can see all this code is going to be build up on screen and then the code all the code here in login is going to be placed right here in this section and you can see in this sub base i'm extending from the base so i'm going out of this folder here and i'm going into this file here and this is my setup file for the pages you can see it's got the html header etc on this page so on this page here that's like the header for the page etc that you saw earlier now down here on line 154 you can see this is in the base.html that's where i'm going to put my block and that's where i'm going to put the code from the sub base so the sub base code is going to go into this block and then you can see i've got another block here and that code from the login is going to be placed right here and that's how the page is being created through these kind of blocks injecting this in this code into those blocks there so we've got a three stage here we've got the base with all the main elements of the page we then in we then place the code in the sub base inside of this section here on this page and then here this sub code block that gets filled up with the login so what i need to do here is somehow utilize that system um so that i can basically include the base here into the um into the existing base so sorry this base here is my existing template base and this is the new base from two factor so i need to inherit from here i need to put this code inside of this block here so let's just go into um for example my sub base here and i can just basically just use this code here right so i'm going to say extend from base so let's go back into my uh my two factor base here and i'm saying i want to extend from the base so that's the space file here so i've gone out one folder i've gone out one directory folder here and now i'm inside the base a dot dot dash so now i can have a look to make sure so it's being placed in the right place so here it needs to go and block content so i need to match block content with the outer elements inside the base here so here it says block content wrapper so we know that's wrong now let's call that black block content so the same name is this here so let's just give that a go and see what it looks like okay so we've got an error here block tag with name content appears more than once okay no problem because you can see here we've got this content in the middle so let's call this sub content now okay so the block in the middle of the base is now called sub content so let's go back into our code here so you can now see i've got my template my original um code top and bottom etc and you can see that i've got the login stuff in the middle so what obviously i need to do now is kind of align this up utilize my existing template structures to kind of line all this up and again this is going to be different on yours um so this is sub content now let's remember that what's being placed in here is if we go into the two factor core remember this is the login page so what we need to do now you see you can see it says block content when actual fact we want to put this code inside of our base here in the block sub content now so i'll go back into log in here i'm going to call this block sub under stored content now so let's uh have a look at those changes well that completely ruins it because i what i need to do now is also extend from the right place so um extend to factor slash based dot focus okay so i've just done it in the wrong one okay so you can see that this is being extended from the focus so that was the base focus sorry so again um what we're going to need to do here you can see this extends the base dot html page so it looks as though i'm going to need to extend a few different times here this is going to potentially get a little bit confusing so what i'm going to do is i'm going to um not use this base focus okay so i'm just going to um get rid of this base focus i better keep it for naturally so let's go into login so we're not going to use base focus um so what we're going to extend from is just base yep underscore base so this one here and then i can now use sub content because sub content is in the base so let's go back and have a look okay so we can now see it's kind of lined up nicely with my existing code it's in the right kind of frame set there so obviously now i want to place that in the middle so here what i'm doing really is i'm just going to look at my existing code in the account login and have a look to see what i've done here so you can see i've got this form here it doesn't look like there's any styling but i'm extending from the sub base so this login is standing from sub base so i'm having a look at this code see what's going on here um so you can see that what i'm going to do now is have a look at this here see basically this base needs to look like this sub base i think that's the the key here so i'm basically just going to copy and paste that in like that this is pasted in from the sub base i've already made for my template system so let's have a look to see if that kind of works okay so not much changes going on there so you saw originally the login stretched the whole page so it's probably the wrong page to utilize i'm going to go in my dashboard go to edit details and that's going to tell me that i need to create a new kind of div around everything here so this edit details extends the sub base over here so you can see that i've got this column six so what i'm going to do now is go into my uh get rid of the login so i've got my base i'm going to go into my login.html page so just after the block content i'm going to add this new div column six obviously yours is gonna be completely different but i'm just uh giving you a general idea what's going on here um so we've got that in so now at six and center it now is center and utilizing uh six blocks like in the middle here so i've just basically centered it you can see that i'm contr how i'm controlling that so the last component that you saw was these boxes and these labels were controlled in a different way so what i've done there is i've created a custom template facility which will filter sorry that will enable me to kind of control this so if you want to control this there's a few ways of doing this i'm just kind of making a quick um hack here really in some respects it is um but is a valid way of doing things so uh let's go into let's just close this up close this up so i've made it a custom filter now i did make a previous tutorial the previous tutorial to this is the custom filter tutorial so i won't go through it completely but basically we're making a custom filter for our form here so um we're going to need to build a new folder here so if we want to build a new template filter new folder we need to call that template tags so that's a template text yep um oh it already exists apparently account template tags oh we've already got it so inside of template tags i've already made looks like the example yep so if you want to follow this example what's happening here is i'm basically going to select the input field collect it as a string the whole string as it would appear in html i'm going to check to see if there's any classes if there isn't any classes i'm going to start to set up a list so that then i can take the class items you know the star the css class items and then i'm going to inject them into the string the input string and then just return it that's what's happening i've explained it in more detail in the previous tutorial so now i've got that in place i can now start to think about putting that in my code so let's see where we can control these uh these inputs here so these inputs are generated from if we go into the templates and then the two factor here you'll see that we've got wizard actions and widgets forms so this is the forms that have been generated so uh what you'll find is uh just focus on the wizard form here so where this wizard idea comes from this is something another plugin that this application is using so let's just go into the the documentation okay uh you'll see that the when we install this application it's also installing the django django form tools so this is going to provide us a way of making a wizard so a step-by-step type of um form guide so when we click on this button it goes to that step and it shows a different form and so on so it just allows us to build that type of setup and that's what's been generated here so it's in that respect it's it's not difficult but it can be difficult to kind of control these boxes because it's utilizing that type of that package so here we're just going to create a class override where we're going to inject some classes some bootstrap classes to style this so uh going back in the code this is where the form is so what i can do here is i can break this apart um because we know that the former inputs are going to be generated they're going to be here within form so we can now control how that is now being placed on the page so let's just um build this up so and we're going to say so we're going to create a for loop so 4 for a field for a field in the wizard dot form so for every field defined in the wizard form we're gonna do something so we're gonna manually print out the the label so we've got a label here and that's going to have a class of form label so we're using bootstrap so form label and then inside of here we're going to output the the field label yeah okay that's pretty much it for the label so that's our label so by doing this we're also formatting how this is being presented on the page because we've got the label above the input field in our case that's what we would like so now we can output the field so let me just show you this show you this first so let's just do that first let's uh actually let's just end the four okay so let's go back in and refresh so you can see that we're looping we can see lots of things here because we we included let me just uh get rid of this so we're gonna get rid of this wizard form now so you can see that yeah it's a bit of a mess right um but it's starting to be formatted so now we're going to format these inputs so we're going to use our custom let's go back here we're going to use our custom template filter that we've created so this filter is uh called add classes so that's what we've called our filter so what we're going to need to do here is add classes and then we just need to define what um we want to kind of inject in the classes so this is going to be some bootstrap classes say form control and margin bottom two and then maybe account form so these are just all classes i've set up for this system and our bootstrap classes so now we've got that in we go back oh i'll go back and refresh oh you have a problem uh so let's have a look to see what the problem is uh we've got a invalid filter so that could just be because we need to reset the server um so let's go back and reset the server or i may have uh made a mistake filled so invalid filter okay okay so let's go back and just rerun the server let's try this again okay so there seems to be a small problem so what's happening here the problem here is i'm not actually loading the filters so here my filters are called example here so what i need to do is um just load them in so i load the um i mean i need to reset the server for that that's what i've forgotten so now when i run it hopefully now and we still got a problem okay um let's go back uh because i've put it in wrong cade i mean i'm just going quick i do apologize that's all uh okay and it doesn't help that i'm so zoomed in out right so now then let's give it a go there we go so you can now see that the input forms have been nicely styled and i can pretty much work with this so um yeah you can see that it's now because it's the same form set where we've styled you can see that everything is nicely styled how i want it so next up i want to set up the security kind of home page so we know that potentially how to get to the page remember we can have a look to see all the different urls are created so we know that the two factor setup page here so if i were to navigate to this here that's going to take me to the setup page but you can see that to get to the two-factor page that's the account to factor now how do we control this page here so this page here represents if i go back in to my code if we go into our templates and let's get rid of the account so in our templates here we've got profile inside a profile you're probably going to find that this is the home page so we can just check that let's just do something like this so you can see that we're working on this page here um so at this point we're going to think about doing the same thing right so we knew that the login worked from the base html so it's likely that we're just going to run from the base html and then run from sub content from the base html so let's give that a go so template does not exist so that's normally a problem the fact that i'm not linked properly to it so i'm inside a different folder here in the profile so i need to go outside out of that folder back into the main directory so i can access the base so dot dot dash here and then you can see that that works nicely so i'm not going to do anything now special there it's nicely lined up here um and i've now got a different page here so this is the backup tokens so it's just now a case of working through these other uh these other pages here so let's go into their base dot dot dash and then make sub content so it's just a case of working out what page at that point you're working with so in this case we've got the backup tokens page here so i just need to go around and this is one way at least to do it just uh connect everything up to the page that i want to use um oh login i'm already logged in so let's go back to two factor okay so showcase so i've saved the page that was the um the backup tokens page so once i've set it up you can see that i'm just need to go through the pages that i need to and i'm just going to then realign it into my into my website and of course then the last thing i probably need to do at this point is to make a link to it so i know it's the account to factor here um so let's just quickly build a link to it now um let's just go back into the code here now back to security form button okay so if we're not too sure what links or how we link things um you'll find in the code that things link back to the the profile for example so it looks like to get to the two factor profile i can see here that my url is such so um what i can do of course is i can just copy this and just think about where i want to put this so um in my system here i'm going to go to the account and then the dashboard edit details so on this page here i'm just going to make a new section so um in my form here i'm just looking for a button okay we'll use that button there um so just paste that there so i've got it so i've got a button here um that's probably not what i'm gonna need i'm just gonna need a link let me just link this so i'm just gonna put it here just to show you so let's go back um so let's go back into my account here we're gonna go into security login now you can see here that i've got an error i don't apologize um what's going on here let's get rid of this two factor so two factor url okay so here i've got my link now to two factor for example obviously i would put this in a button but i can see now i've linked into that new app that the new the new package sorry um that we're utilizing and that that allows me just to hook in so everything else has kind of set up for me so i can disable i can show my um tokens now and it's in a basic terms it's nicely set up as a case of if you want to extend those templates a little bit further and the buttons and so on of course you can go ahead and do that okay so by all means go and have a read now you know how to kind of implement it it's worth reading through testing it out in your system um going through all the different facilities there's a number of other tools that this provides mobile kind of codes that you can hook into and just have a look at the documentation it kind of takes you through that but just for setting up django two-factor authentication having and allowing users to have some codes so in case they like i said ins uninstall the google authentication app on their phone or lose it or something like that that kind of protects you against that everything else um you'll probably need some sort of link so they can contact you so you can disable it or reset it in case the user completely forgets all their codes and [Music] and their app now you may want to kind of maybe automate that slightly in in your application because you don't want lots of people contacting you potentially um if you're kind of a small business you want to maybe automate that so maybe you're going to create a custom kind of automation tool um which allows the user uh similar to when i showed you um in a previous tutorial how to use django to reset a password so it's going to be kind of a similar process you want to utilize that type of facility and basically copy that facility into a authentication reset option so you'll send them an email the user an email and then you'll be able to allow them to click on the link and then potentially they can then disable it but of course more sort is needed there because if it's just a case of an email and someone can reset it on an email maybe that's not the safest way of working because the whole point is it's trying to protect your account um potentially if someone is able to hack your email um you don't want them to be able to quickly kind of overcome the two factor in that respects but anyway those are just wonderful questions that you may need to think about now hopefully that was useful just to get two factor authentication quickly working on your application of course this integrates so you saw it earlier integrated with the admin as well so the admin needs to actually have to uh if it's an admin user of course need to use now two-step authentication to log in remember to make sure that um before you log out grab your um your code because you won't be able to log in otherwise again you'll need to go into the database and kind of turn that off to do that and that can be a little bit of a process if you're not familiar with doing those type of things so thank you very much for listening and hopefully i'll see in the next tutorial thank you very much
Info
Channel: Very Academy
Views: 4,838
Rating: 5 out of 5
Keywords: python, django, 2fa django, 2 factor authentication, two factor authentication django, django tutorial, djangotutorial, django tut, django 3, django examples, learn django, django beginners, beginners django, django framework, django example, django 2021, python django, django custom filters
Id: 0SB9K8Dr5ck
Channel Id: undefined
Length: 46min 22sec (2782 seconds)
Published: Fri Mar 05 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.