Last active
June 30, 2019 15:46
-
-
Save shrayasr/10004888 to your computer and use it in GitHub Desktop.
Getting started with Flask-Login
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ## Pre-requisites | |
| * Flask `pip install flask` | |
| * Flask-Login `pip install flask-login` | |
| ## Steps | |
| * Create your user model class: `User`. This would be a class that stores information about your User. Essentially the `user_name`, `user_id`, `email`, etc. | |
| * Create your user access class: `UserDAO (User Data Access Object)`. This is the wrapper around your user model that uses the `User` class and performs functions around it (signup, signin, validate, etc) | |
| * Initialize the flask app with `app=Flask(__name__)` | |
| * Set a secret key, Flask-Login uses sessions and sessions in Flask need a secret Key | |
| * Create an instance of `LoginManager` class `login_manager = LoginManager()` | |
| * Initialize the `LoginManager` with the app that was created `login_manager.init_app(app)` | |
| * In `User`, inherit the `UserMixin` from Flask-Login. `class User(UserMixin)`. Implement the required methods: `is_authenticated`, `is_active`, `is_anonymous` and `get_id` | |
| * Decorate a method with `@login_manager.user_loader` that returns the `User` object given the ID (the `UserDAO` would be where this method would be written) | |
| * In the login end point, once the app side validation is done, register the user into Flask-Login with the `login_user` method. The `login_user` method takes a `User` object. `login_user(UserDAO.get(user_name))`. This would register a session with that user | |
| * After that, any route that needs authentication can be decorated with `@login_required` and Flask-Login takes care of the rest | |
| * To logout, call the `logout_user()` method | |
| * To get the current user's ID the `current_user.get_id()` method can be used. If there is no one logged in, `current_user.get_id()` would return `None` | |
| **DONE.** |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment