Strumenti Utente

Strumenti Sito


programmazione:python:bottle:semplice_autenticazione_con_i_cookie

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

programmazione:python:bottle:semplice_autenticazione_con_i_cookie [12/02/2019 - 12:20] (versione attuale)
Fabio Di Matteo creata
Linea 1: Linea 1:
 +====== 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. ​
 +
 +<code python>
 +#​!/​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/<​filename>'​)
 +def send_js(filename):​
 + return static_file(filename,​ root=os.path.dirname(os.path.realpath(__file__))+'/​html/​js/'​)
 +
 +@route('/​css/<​filename>'​)
 +def send_css(filename):​
 +    return static_file(filename,​ root=os.path.dirname(os.path.realpath(__file__))+'/​html/​css/'​)
 +
 +@route('/​img/<​filename>'​)
 +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()
 +
 +
 +
 +</​code> ​

programmazione/python/bottle/semplice_autenticazione_con_i_cookie.txt · Ultima modifica: 12/02/2019 - 12:20 da Fabio Di Matteo