I'm running the Flask app below in Replit. The session is resetting after a redirect() when I run it in MS Edge or Chrome. It works when I run it in Firefox. Here's the code:
from flask import Flask, render_template, request, redirect, url_for, session
import secrets
app = Flask(__name__)
app.secret_key = secrets.token_hex(16)
users = {
'user1': {'username': 'user1', 'password': 'password1'},
'user2': {'username': 'user2', 'password': 'password2'}
}
@app.route('/')
def home():
print("loading home", session)
return render_template('index.html')
@app.route('/signup', methods=['GET', 'POST'])
def signup():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
users[username] = {'username': username, 'password': password}
return redirect(url_for('home'))
return render_template('signup.html')
@app.route('/login', methods=['GET', 'POST'])
def login():
print("loading login", session)
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
user = users.get(username)
if user and user['password'] == password:
session['username'] = username
print("session set", session)
return redirect(url_for('home'))
return render_template('login.html')
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8080, debug=True)
This is the console output:
172.31.196.1 - - [21/Dec/2023 23:03:48] "OPTIONS * HTTP/1.1" 404 -
loading home <SecureCookieSession {}>
172.31.196.1 - - [21/Dec/2023 23:03:48] "GET / HTTP/1.1" 200 -
loading login <SecureCookieSession {}>
172.31.196.1 - - [21/Dec/2023 23:03:51] "GET /login HTTP/1.1" 200 -
loading login <SecureCookieSession {}>
172.31.196.1 - - [21/Dec/2023 23:03:51] "GET /login HTTP/1.1" 200 -
loading login <SecureCookieSession {}>
session set <SecureCookieSession {'username': 'user1'}>
172.31.196.1 - - [21/Dec/2023 23:04:06] "POST /login HTTP/1.1" 302 -
loading home <SecureCookieSession {}>
172.31.196.1 - - [21/Dec/2023 23:04:06] "GET / HTTP/1.1" 200 -
loading home <SecureCookieSession {}>
172.31.196.1 - - [21/Dec/2023 23:04:06] "GET / HTTP/1.1" 200 -
I've verified that cookies are enabled.
I have updated your code to have a functional user registration process in Flask. Current code uses
users
from the dictionary, I assume you will use some database to store the users information.I have added the following:
username
insession
after signup process.flash
messages in theapp.py
and showed them in the templates.requirements.txt
:app.py
:index.html
:signup.html
:login.html
:Demo
Homepage:
Login:
After Login Homepage:
References