====== Semplice autenticazione basata su cookie in Bottle (Python) ====== Autore: **//Fabio Di Matteo//** \\ Ultima revisione: **// 12/02/2019 - 12:18 //** // // Come da titolo una semplice autenticazione basata sui cookie. #!/usr/bin/env python3 import os from bottle import Bottle,route, run, template, static_file, request, response,get, post COOKIESECRET="blablablasecret" USERNAME="fabio" PASSWORD="fabio" def start_server(): run(host='0.0.0.0', port=8080) # Ogni file deve avere una rotta @route('/js/') def send_js(filename): return static_file(filename, root=os.path.dirname(os.path.realpath(__file__))+'/html/js/') @route('/css/') def send_css(filename): return static_file(filename, root=os.path.dirname(os.path.realpath(__file__))+'/html/css/') @route('/img/') def send_img(filename): return static_file(filename, root=os.path.dirname(os.path.realpath(__file__))+'/html/img/') # Form per il login @route('/login') def login(): formlogin=open(os.path.dirname(os.path.realpath(__file__))+"/html/login.html").read() return formlogin # Ricavo username/password dal form e li salvo sui cookie, poi rendirizzo sulla home page # dove avverra' il controllo delle credenziali tramite "checkLogin()" @route('/dologin', method='POST') def dologin(): username = request.forms.get('username') password = request.forms.get('password') print("Login: %s/%s" % (username, password)) response.set_cookie("username", username , secret=COOKIESECRET) response.set_cookie("password", password, secret=COOKIESECRET) response.status = 303 response.set_header('Location', '/') # Svuoto i cookies e rendirizzo alla homepage, # dove avverra' il controllo delle credenziali tramite "checkLogin()" @route ('/logout') def logout(): response.set_cookie("username", "") response.set_cookie("password","") response.status = 303 response.set_header('Location', '/') # Si occupa di controllare il nome utente e la password salvate su dei cookie. # Qualora non fossero corretti rendirizza al form di login def checkLogin(): username= request.get_cookie("username", secret=COOKIESECRET) password= request.get_cookie("password", secret=COOKIESECRET) if (username==USERNAME and password==PASSWORD): print("Riconosciuto") return True else: print("Non riconosciuto") response.status = 303 response.set_header('Location', 'login') return False # Rotta per la homepage. # Controlla le credenziali e se sono corrette mostra il serve "html/index.html" @route('/') def home(): checkLogin() homepage=open(os.path.dirname(os.path.realpath(__file__))+"/html/index.html").read() return homepage # Avvia il webserver start_server() # Se vogliamo avviare la nostra app su pythoneverywhere.com disabilitiamo "start_server()" # e abilitiamo: # application = default_app()