Flask Login System with Flask-Login and User Authentication

  • Share this:

Code introduction


This code snippet implements a simple login system based on Flask and Flask-Login, including login, logout, and protected route functionalities.


Technology Stack : Flask, Flask-Login

Code Type : The type of code

Code Difficulty : Intermediate


                
                    
from flask import Flask, request, jsonify
from flask_login import LoginManager, UserMixin, login_user, login_required, logout_user

app = Flask(__name__)
app.secret_key = 'super secret key'

# Initialize the login manager
login_manager = LoginManager()
login_manager.init_app(app)

# Dummy user loader
@login_manager.user_loader
def load_user(user_id):
    return User(user_id=user_id)

class User(UserMixin):
    def __init__(self, user_id):
        self.id = user_id

def login_with_redirect():
    # This function handles the login process and redirects the user after successful login
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        if username == 'admin' and password == 'password':
            user = User(user_id=username)
            login_user(user)
            return jsonify({"message": "Login successful"}), 200
        else:
            return jsonify({"message": "Invalid username or password"}), 401

@app.route('/login', methods=['POST'])
@login_required
def protected():
    # This route is protected and can only be accessed by logged in users
    return jsonify({"message": "This is a protected route"}), 200

@app.route('/logout')
@login_required
def logout():
    # This function handles the logout process
    logout_user()
    return jsonify({"message": "Logout successful"}), 200

if __name__ == '__main__':
    app.run(debug=True)