Dancer::Plugin::Auth::Extensible
se encarga de una gran cantidad de código repetitivo por usted. Puede poner en funcionamiento un sistema de inicio de sesión simple sin tener que escribir ninguno de sus propios /login
rutas de la siguiente manera.
Configurar Dancer::Plugin::Auth::Extensible
Instale Dancer::Plugin::Database
y Dancer::Plugin::Auth::Extensible::Provider::Database
y agregue esto a config.yml
:
session: "YAML"
plugins:
Auth::Extensible:
realms:
users:
provider: 'Database'
disable_roles: 1
Configurar la conexión de la base de datos
Configure su conexión de base de datos en environments/development.yml
para que pueda tener diferentes configuraciones para desarrollo y producción. Así es como se ve la configuración para MySQL, con las credenciales de conexión (nombre de la base de datos, host, nombre de usuario y contraseña) almacenadas en un archivo de opciones separado database.cfg
:
plugins:
Database:
dsn: 'dbi:mysql:;mysql_read_default_file=/path/to/database.cfg'
dbi_params:
RaiseError: 1
AutoCommit: 1
Para Postgres, debe usar un .pgpass
archivo para almacenar sus credenciales de conexión. Asegúrese de que el archivo no sea legible en todo el mundo. Consulte esta publicación de Stack Overflow
para un ejemplo. Pruebe que su archivo de credenciales funciona en la línea de comando y que su servidor web puede leerlo.
Su tabla existente parece ajustarse al esquema sugerido en los documentos, pero incluso si no es así, puede ajustar los nombres de las tablas y las columnas en configuración .
Bloquea tus rutas
Agregue el require_login
palabra clave a una ruta que desea proteger. Un /login
la ruta se generará automáticamente con un formulario de inicio de sesión básico, aunque puede crea las tuyas propias
si quieres.
lib/MiAplicación.pm
package MyApp;
use Dancer ':syntax';
use Dancer::Plugin::Auth::Extensible;
our $VERSION = '0.1';
get '/' => require_login sub {
template 'index';
};
true;
(Sí, ese es realmente todo el código que tienes que escribir. Te dije que se encarga de una gran cantidad de repeticiones).
Crypt::SaltedHash
se utiliza para codificar contraseñas automáticamente. Tenga en cuenta que nunca debe almacenar contraseñas de texto sin formato en su base de datos; cuando agrega un usuario a su base de datos, debe generar un hash de la contraseña y almacenar el hash.
Tenga en cuenta que los roles están deshabilitados en este ejemplo. Si habilita roles, puede hacer otras cosas ingeniosas como solo permitir que los usuarios con el rol de administrador vean las páginas de administración.