sql >> Base de Datos >  >> RDS >> PostgreSQL

Un sistema simple de inicio de sesión/autorización usando Dancer y Postgres

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.