I am new to flask. I want to make an webapplication with an login counter. My route.py looks like this:
#Imports
import socket, time
from datetime import datetime, timedelta
from flask import Flask, render_template, request, make_response, flash, redirect, session
from CorendonPiFi import app
#Variables
now = datetime.now()
app = Flask(__name__)
LOGIN_ATTEMPTS = 5
app.config['SECRET_KEY'] = 'Adb10C94wKJBBWJD89waABdaw1AKD01dawe112a'
current_time = now.strftime("[%d/%m/%Y %H:%M:%S]")
#Lifetime of the session
app.permanent_session_lifetime = timedelta(minutes=0.5)
#Renders the login page
@app.route('/', methods = ['GET','POST'])
@app.route('/login', methods = ['GET','POST'])
def login():
ipaddr = socket.gethostbyname(socket.gethostname())
session.permanent = True
session['attempt'] = LOGIN_ATTEMPTS
session['no_acces'] = ""
no_acces = session['no_acces']
username = request.cookies.get('username')
if username:
return render_template('login.html', username=username)
if request.method=='POST':
username = request.form.get('username')
password = request.form.get('password')
#Check if the user is blocked
if ipaddr == no_acces:
flash("Je bent geblokkeerd probeer het later opnieuw.", "danger")
elif username=='admin' and password=='admin':
#Login message in console
print(f"{ipaddr} - - {current_time} {username} logged in -")
resp = make_response(redirect('/welcome'))
resp.set_cookie('username', username)
return resp
else:
#login attempts
attempt = session.get('attempt')
attempt -= 1
session['attempt'] = attempt
if attempt < 1:
flash("Je pogingen zijn op, probeer het over 10 minuten weer.", "danger")
session['no_acces'] = ipaddr
else:
flash(f"Gegevens komen niet overeen, je hebt nog {attempt} pogingen over.", "danger")
#Failed login message in console
print(f"{ipaddr} - - {current_time} {username} tried to log in -")
return render_template('login.html')
But every time a user cant login the session (obviously) resets... Is there a way I can create and call a session variable outsite the login function?