Skip to content

Instantly share code, notes, and snippets.

@shrayasr
Last active June 30, 2019 15:46
Show Gist options
  • Save shrayasr/10004888 to your computer and use it in GitHub Desktop.
Save shrayasr/10004888 to your computer and use it in GitHub Desktop.
Getting started with Flask-Login

Getting started with Flask-Login

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.

Implementation

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment