Introducción a desarrollo web con PHP y Yii
¿Qué es Yii2?
¿Por qué usar PHP y Yii2?
Arquitectura modelo–vista–controlador
Instalación de Yii2
Estructura de una aplicación con Yii2
Configuración de variables de entorno
Quiz: Introducción a desarrollo web con PHP y Yii
Esquema de la aplicación
Proyecto: The Book Club
Creación del schema de la base de datos
Creación de tablas clubs y club_members
Quiz: Esquema de la aplicación
Modelos, vistas y controladores
Commands
Model
ActiveRecord
ActiveRecord de la clase author
Relational data: hasOne()
Relational data: hasMany()
Web Controllers
Controller de la clase author
Enrutamiento y creación de URLS con urlManager
Views
Configuración de vistas con Smarty
Quiz: Modelos, vistas y controladores
Manejo de usuarios con Yii2
Clase user
Autenticación de usuarios
Autenticación de usuarios: LoginForm
User input
Formulario de login con ActiveForm
Validación de modelo con core validators
Core validators: unique, filter, email
Quiz: Manejo de usuarios con Yii2
Enlaces, navegación y tablas intermedias
Dar de alta un libro
Asignación de libros a usuario
Asignación de libros a usuario: vista
Calificar un libro
Promedio de calificaciones de libro
Relaciones entre tablas intermedias con viaTable()
Enlaces y navegación
Quiz: Enlaces, navegación y tablas intermedias
Despliegue y cierre del proyecto
Despliegue de aplicación de Yii2 a Heroku
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Los conceptos básicos son esenciales en el desarrollo web, pero nada se compara con llevarlos a la práctica. En esta guía, exploraremos cómo implementar una tabla de usuarios en tu aplicación, garantizando un flujo seguro y eficiente para la autenticación. ¡Vamos a ello!
Para comenzar, es crucial establecer qué elementos son necesarios en tu tabla de usuarios. Aquí una lista con los atributos clave:
VARCHAR
con un límite de caracteres, generalmente 100, asegurando que sea único.VARCHAR
, es ideal almacenarlo ofuscado por seguridad.Este set de atributos básicos sentará las bases para un autentificación eficiente en tu aplicación.
Una vez claro qué debe incluir nuestra tabla, pasemos a la construcción en la base de datos:
CREATE TABLE IF NOT EXISTS users (
userID INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(100) UNIQUE NOT NULL,
password VARCHAR(500) NOT NULL,
auth_key VARCHAR(200),
access_token VARCHAR(200),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
modified_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
Con nuestra tabla lista, integramos la lógica de negocio en nuestra aplicación. Aquí resumimos los pasos esenciales:
Acceso a la base de datos: Asegúrate de tener un modelo de usuario que extienda de ActiveRecord
.
Validación de usuarios: Implementa métodos para validar la información del usuario.
public static function findIdentity($id)
{
return self::findOne(['userID' => $id]);
}
Registro y autenticación: Ahora, ajustamos las funciones para operar sobre la base de datos en lugar de listas estáticas.
public static function findByUsername($username)
{
return self::findOne(['username' => $username]);
}
public function validatePassword($password)
{
return $this->password === md5($password . $this->username . $_ENV['SALT']);
}
Uno de los aspectos críticos es gestionar las contraseñas de forma segura. La práctica común y segura es ofuscar las contraseñas antes de almacenarlas.
Ofuscación de contraseñas: Vamos a implementar una función para asegurar mayor seguridad.
public function ofuscatePassword($password)
{
return md5(sprintf('%s.%s.%s', $password, $this->username, getenv('SALT')));
}
Almacenamiento seguro: Utiliza esta función cada vez que registres o actualices una contraseña.
$this->password = $this->ofuscatePassword($inputPassword);
Con estos pasos, garantizamos que las contraseñas almacenadas en la base de datos no estén en texto plano.
Llevar a cabo una implementación práctica no solo solidifica nuestro entendimiento teórico, sino que también mejora nuestras habilidades como desarrolladores. Cada detalle, desde el diseño de la tabla hasta la seguridad de las contraseñas, juega un rol vital. Así que sigue practicando y mejorando; la perfección se logra con cada línea de código. ¡El mundo del desarrollo web te espera!
Aportes 3
Preguntas 1
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?