0
0
Flaskframework~5 mins

Before_request as middleware alternative in Flask

Choose your learning style9 modes available
Introduction

Use before_request to run code before every web request in Flask. It helps you add checks or setup without changing each route.

Check if a user is logged in before accessing any page
Set up database connections before handling requests
Log request details like IP and time for every visit
Modify request data or headers before routes run
Syntax
Flask
@app.before_request
 def function_name():
     # code to run before each request

The function runs before every request automatically.

Return a response inside this function to stop the request from reaching routes.

Examples
This example redirects users to login if they are not logged in.
Flask
@app.before_request
 def check_login():
     if not session.get('user'):
         return redirect('/login')
This logs the visitor's IP and time before handling the request.
Flask
@app.before_request
 def log_request():
     print(f"Request from {request.remote_addr} at {datetime.now()}")
Sample Program

This Flask app uses before_request to print info and redirect users to login if not logged in. After login, users can access the home page.

Flask
from flask import Flask, request, redirect, session
from datetime import datetime

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

@app.before_request
 def before():
     print(f"Before request: {request.path} at {datetime.now()}")
     if request.path != '/login' and not session.get('user'):
         return redirect('/login')

@app.route('/login')
 def login():
     session['user'] = 'guest'
     return 'Logged in! Go to /'

@app.route('/')
 def home():
     return 'Welcome to the home page!'

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

Use before_request for simple global checks or setup.

It runs before every request, so keep code fast to avoid slowing your app.

Returning a response inside before_request stops the request from reaching route handlers.

Summary

before_request runs code before every Flask request.

It is useful for login checks, logging, or setup tasks.

Returning a response here can redirect or block requests early.