Flask Session & Cookies | asadmukhtar.info
Step-by-Step Guide to Setting Up Authentication in Laravel 12 with Breeze   |   Manual Authentication in Laravel 12: Step-by-Step Guide   |   How to Build a REST API in Laravel 12 with Sanctum   |   Laravel 12 CRUD Application with Image Upload   |   Laravel 12 Multi-Auth System: Admin & User Login   |   How to Integrate Stripe Payment Gateway in Laravel 12   |   Building a Role-Based Access Control (RBAC) in Laravel 12   |   How to Use Laravel 12 Queues and Jobs for Background Tasks   |   Laravel 12 Livewire CRUD Example with Validation   |   Email Verification and Password Reset in Laravel 12   |   How to Use Laravel 12 API with Vue.js 3   |   Laravel 12 AJAX CRUD with jQuery and Bootstrap   |   Laravel 12 Multi-Language Website Setup   |   React Best Practices for 2025: Performance, SEO, and Scalability   |   How to Build a Full-Stack MERN App: A Step-by-Step Guide   |   React State Management: Redux vs. Context API vs. Recoil   |   Server-Side Rendering (SSR) in React with Next.js for SEO   |   How to Optimize React Apps for Faster Load Times   |   Building a REST API with Node.js and Express for a React App   |   Integrating JWT Authentication in React and Node.js (MERN Stack)   |   Real-time Chat App with React, Node.js, and Socket.io   |   How to Deploy a MERN Stack Application on AWS or Vercel   |   Connecting React Frontend to a Node.js Backend with Axios   |   Laravel Implement Flash Messages Example   |   How to integrate Angular 19 with Node.js and Express for full-stack development   |   Best practices for connecting Angular 19 frontend with Laravel API   |   Step-by-step guide to upgrading an existing project to Angular 19   |   How to implement authentication in Angular 19 using JWT and Firebase   |   Optimizing server-side rendering in Angular 19 with route-level render modes   |   Using Angular 19 signals for state management in large applications   |   How to create standalone components in Angular 19 for modular architecture   |   Building a CRUD application in Angular 19 with MongoDB and Express   |   Implementing lazy loading in Angular 19 to improve performance   |   How to integrate Angular 19 with GraphQL for efficient data fetching   |   Vue 3 Composition API vs Options API: A Comprehensive Comparison   |   Fetching and Displaying Data from APIs in Vue.js with Axios   |   Building a Todo App in Vue.js with Local Storage Integration   |   Handling Forms and Validation in Vue.js Using VeeValidate   |   State Management in Vue.js Applications Using Vuex   |   10 Most Important Tasks Every MERN Stack Developer Should Master   |   How to Build a Full-Stack CRUD App with MERN Stack   |   Best Practices for Authentication & Authorization in MERN Stack   |   1. MEAN Stack vs. MERN Stack: Which One Should You Choose in 2025   |   Top 10 Node.js Best Practices for Scalable and Secure Applications   |   How to Build a REST API with Laravel and Node.js (Step-by-Step Guide)   |   Mastering Angular and Express.js for Full-Stack Web Development   |   Top 10 Daily Tasks Every Frontend Developer Should Practice   |   Essential Backend Development Tasks to Boost Your Coding Skills   |   Real-World Mini Projects for Practicing React.js Daily   |   Laravel Developer Task List: Beginner to Advanced Challenges   |   How to Assign Effective Tasks to Your Intern Developers   |   10 Must-Try Tasks to Master JavaScript Fundamentals   |   Practical CSS Challenges That Improve Your UI Design Skills   |   Top Tasks to Learn API Integration in React and Angular   |   Best Task Ideas for a 30-Day Web Development Challenge   |   Top Git and GitHub Tasks Every Developer Should Know   |   30-Day Task Plan for Web Development Interns   |   Weekly Task Schedule for Junior Developers in a Startup   |   How to Track Progress with Development Tasks for Interns   |   What Tasks Should You Give to Interns in a MERN Stack Project   |   Build These 5 Projects to Master React Routing   |   Task-Based Learning: Become a Full-Stack Developer in 90 Days   |   Daily Coding Tasks That Will Sharpen Your Logical Thinking   |   Top 7 Backend Task Ideas to Practice With Node.js and MongoDB   |  

1. Setting Up Flask

Step 1: Install Flask and Create a Basic App

pip install flask
mkdir flask_session_cookies
cd flask_session_cookies

Create app.py and add the basic Flask setup:

from flask import Flask, render_template, request, redirect, url_for, session, make_response

app = Flask(__name__)
app.secret_key = 'your_secret_key'  # Required for session handling

@app.route("/")
def home():
    return render_template("index.html")

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

2. Handling Cookies in Flask

Step 2: Setting and Getting Cookies

Modify app.py to add routes for setting and retrieving cookies:

@app.route("/set_cookie")
def set_cookie():
    response = make_response("Cookie has been set!")
    response.set_cookie("username", "FlaskUser", max_age=60*60*24)  # Expires in 1 day
    return response

@app.route("/get_cookie")
def get_cookie():
    username = request.cookies.get("username")
    return f"Stored Cookie: {username}" if username else "No cookie found!"

Step 3: Deleting a Cookie

@app.route("/delete_cookie")
def delete_cookie():
    response = make_response("Cookie deleted!")
    response.set_cookie("username", "", expires=0)
    return response

3. Using Sessions in Flask

Step 4: Setting and Retrieving Session Data

Modify app.py to store user data in a session:

@app.route("/set_session")
def set_session():
    session["user"] = "JohnDoe"
    return "Session set for user!"

@app.route("/get_session")
def get_session():
    user = session.get("user")
    return f"Stored Session: {user}" if user else "No session found!"

Step 5: Deleting a Session

@app.route("/delete_session")
def delete_session():
    session.pop("user", None)
    return "Session data cleared!"

4. Creating a Simple Login System Using Sessions

Step 6: Create a Login Form

Inside the templates folder, create index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Flask Sessions & Cookies</title>
</head>
<body>
    <h1>Flask Session & Cookies Example</h1>
    
    <form action="/login" method="POST">
        <label>Username:</label>
        <input type="text" name="username" required>
        <button type="submit">Login</button>
    </form>

    <p><a href="/logout">Logout</a></p>
</body>
</html>

Step 7: Add Login and Logout Routes

Modify app.py to handle user login using sessions:

@app.route("/login", methods=["POST"])
def login():
    session["user"] = request.form["username"]
    return redirect(url_for("dashboard"))

@app.route("/dashboard")
def dashboard():
    if "user" in session:
        return f"Welcome {session['user']}! <br><a href='/logout'>Logout</a>"
    else:
        return redirect(url_for("home"))

@app.route("/logout")
def logout():
    session.pop("user", None)
    return redirect(url_for("home"))

5. Running the Flask App

Step 8: Start the Flask Server

python app.py

Open http://127.0.0.1:5000/, enter a username, and click Login.

  • If successful, you’ll see a dashboard with a Logout option.
  • Clicking Logout clears the session and redirects back to the homepage.

Conclusion

In this guide, you learned how to:

✅ Use cookies to store small data on the client-side
✅ Use sessions to store user data securely on the server
✅ Build a simple login/logout system with sessions

Now, you can manage user authentication and stateful data in your Flask applications! 🚀