from flask import Flask from flask.ext.login import LoginManager, UserMixin, login_user, logout_user, login_required app = Flask(__name__) app.secret_key = 'secret_key' login_manager = LoginManager() login_manager.init_app(app) # User class example class User(UserMixin): def __init__(self, id): self.id = id @login_manager.user_loader def load_user(user_id): # load the user object from a user_id return User(user_id) @app.route('/login') def login(): # authenticate and login the user user = User(1) login_user(user) return 'Logged in' @app.route('/logout') @login_required def logout(): # logout the user logout_user() return 'Logged out' @app.route('/') @login_required def home(): # user home page return 'Welcome!' if __name__ == '__main__': app.run()In this example, we have created a User class which extends UserMixin from flask.ext.login. The User class has an attribute called id which is used to uniquely identify the user. We have also defined a user_loader function which returns the User object based on the user_id. We have defined three routes – login, logout and home. The login route authenticates and logs in the user, the logout route logs out the user and the home route is the user's home page which requires authentication. The @login_required decorator is used to protect the routes which require authentication. If the user is not authenticated, then the decorator will redirect to the login page. We have used flask.ext.login library for user authentication and management which is provided by flask.