Código de fuente de una aplicación web que implementa un sistema de autenticación. Incorpora una versión simple de un registro, iniciar y cerrar sesión. Hace uso del sistema de base de datos SQLite, cookies y templates del framework; junto con el módulo hashlib para cifrar las contraseñas con MD5.
Descargar: código de fuente completo
Recuerda descargar el código completo para ejecutar el ejemplo.
#!/usr/bin/env python # -*- coding: utf-8 -*- # # main.py # # Copyright 2013 Recursos Python - www.recursospython.com # # from hashlib import md5 import web urls = ( "/", "Index", "/signup", "SignUp", "/logout", "LogOut" ) app = web.application(urls, globals()) render = web.template.render("templates") class Index: """Página principal""" def GET(self): cookies = web.cookies() username = cookies.get("webusername") # Debería realizarse una comprobación del hash de la cookie # con el de la base de datos. return render.index(username) def POST(self): """Ingresar usuario""" i = web.input() # Buscar el usuario en la bd # Argumento 'vars' para prevenir inyecciones SQL db = web.database(dbn="sqlite", db="users.db") q = db.select("users", where="username=$username", what="password", vars={"username": i.username}) if q: db_password = list(q)[0]["password"] if db_password == md5(i.password).hexdigest(): web.setcookie("webusername", i.username) web.setcookie("webpassword", db_password) web.seeother("/") else: return "Usuario o clave incorrecto." else: return "Usuario o clave incorrecto." class SignUp: """Formulario de registro""" def GET(self): return render.signup() def POST(self): """Crear usuario""" i = web.input() # Verificar que se hayan ingresado los campos. if not i.username or not i.password: return "Ingrese todos los datos." # Abrir la base de datos y añadir un nuevo usuario. # Los cambios se guardan automáticamente (commit). db = web.database(dbn="sqlite", db="users.db") db.insert("users", username=i.username, password=md5(i.password).hexdigest()) web.seeother("/") class LogOut: """Cerrar sesión""" def GET(self): # expires=-1 remueve la cookie web.setcookie("webusername", "", expires=-1) web.setcookie("webpassword", "", expires=-1) web.seeother("/") if __name__ == "__main__": app.run()
Curso online 👨💻
¡Ya lanzamos el curso oficial de Recursos Python en Udemy!
Un curso moderno para aprender Python desde cero con programación orientada a objetos, SQL y tkinter
en 2024.
Consultoría 💡
Ofrecemos servicios profesionales de desarrollo y capacitación en Python a personas y empresas. Consultanos por tu proyecto.