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: 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/<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()

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