Barra laterale

Command disabled: revisions
programmazione:python:bottle:semplice_autenticazione_con_i_cookie

Semplice autenticazione basata su cookie in Bottle (Python)

Autore: Fabio Di Matteo
Ultima revisione: 10/05/2024 - 17:47

Come da titolo una semplice autenticazione basata sui cookie.

L'utilizzo della funzione principale checkLogin() è alquanto semplice:

if (not checkLogin()):
		print("Non autorizzato")
 
	else:
		print("Benvenuto")
 

Di seguito il codice completo.

login.py

from bottle import Bottle,route, run, template, static_file, request,redirect, response,get, post
import hashlib
 
 
users=[
	{"user":"fabio","password":"a53bd0415947807bcb95ceec535820ee","type":"0"},
	{"user":"francesco","password":"0581938f0767a65b373cea80e905c25f","type":"0"}
]
 
 
 
COOKIESECRET="38f0767a65b373cea"
COOKIE_user="usr-py"
COOKIE_pass="pass-py"
 
 
def checkLogin():
	username=  request.get_cookie(COOKIE_user, secret=COOKIESECRET)
	password=  request.get_cookie(COOKIE_pass, secret=COOKIESECRET)
	ret=False
 
	for i in range(0,len(users)):
		if (username ==users[i]["user"] and password == users[i]["password"] ):
			ret=True	
 
	return ret		
 
 
def dologin():
	username = request.forms.get('username')
	password = request.forms.get('password')
	password=hashlib.md5(password.encode("utf-8")).hexdigest()
	print("Login: %s/%s" % (username, password))
 
	response.set_cookie(COOKIE_user, username , secret=COOKIESECRET)
	response.set_cookie(COOKIE_pass, password, secret=COOKIESECRET)
	redirect("/")
 
def loginform():
	return template('login')
 
def logout():
	response.set_cookie(COOKIE_user, "")
	response.set_cookie(COOKIE_pass,"")
	redirect("/")

main.py

#!/usr/bin/python3
 
import  os
from bottle import Bottle,route, run, template, static_file, request,redirect, response,get, post
from login import *
 
 
global app 
app=Bottle()
 
PORT=8080
 
def start_server():
	run(app , host='0.0.0.0', port=PORT, reloader=True, debug=True)
 
@app.route("/")
def home():
	if (not checkLogin()):
		print("Non autorizzato")
		redirect("/loginform")
	else:
		print("Benvenuto")
		return "<p>Benvenuto</p>"	
 
 
def setup_routing(app):
    app.route('/logout', ['GET', 'POST'], logout) 
    app.route('/dologin', ['GET', 'POST'], dologin)
    app.route('/loginform', ['GET', 'POST'], loginform)  
 
 
setup_routing(app) 
start_server()

programmazione/python/bottle/semplice_autenticazione_con_i_cookie.txt · Ultima modifica: 10/05/2024 - 17:55 da Fabio Di Matteo