sql >> Databasteknik >  >> RDS >> PostgreSQL

Ett enkelt inloggning/auktoriseringssystem med Dancer och Postgres

Dancer::Plugin::Auth::Extensible tar hand om en hel del boilerplate-kod åt dig. Du kan få igång ett enkelt inloggningssystem utan att behöva skriva någon egen /login rutter enligt följande.

Konfigurera Dancer::Plugin::Auth::Extensible

Installera Dancer::Plugin::Database och Dancer::Plugin::Auth::Extensible::Provider::Database och lägg till detta i config.yml :

session: "YAML"

plugins:
  Auth::Extensible:
    realms:
      users:
        provider: 'Database'
        disable_roles: 1

Konfigurera databasanslutning

Konfigurera din databasanslutning i environments/development.yml så att du kan ha olika konfigurationer för dev och produktion. Så här ser konfigurationen ut för MySQL, med anslutningsuppgifterna (databasnamn, värd, användarnamn och lösenord) lagrade i en separat alternativfil database.cfg :

plugins:
  Database:
    dsn: 'dbi:mysql:;mysql_read_default_file=/path/to/database.cfg'
    dbi_params:
      RaiseError: 1
      AutoCommit: 1

För Postgres bör du använda en .pgpass fil för att lagra dina anslutningsuppgifter. Se till att filen inte är världsläsbar. Se det här Stack Overflow-inlägget för ett exempel. Testa att din autentiseringsfil fungerar på kommandoraden och att din webbserver kan läsa den.

Din befintliga tabell verkar överensstämma med föreslaget schema i dokumenten, men även om det inte gör det kan du justera tabell- och kolumnnamnen i konfiguration .

Lås ner dina rutter

Lägg till require_login nyckelord till en rutt du vill skydda. En /login rutten kommer att genereras automatiskt med ett grundläggande inloggningsformulär, även om du kan skapa din egen om du vill.

lib/MyApp.pm

package MyApp;
use Dancer ':syntax';

use Dancer::Plugin::Auth::Extensible;

our $VERSION = '0.1';

get '/' => require_login sub {
    template 'index';
};

true;

(Ja, det är verkligen all kod du behöver skriva. Jag sa ju att den tar hand om en hel del konstruktion.)

Crypt::SaltedHash används för att hasha lösenord automatiskt. Observera att du aldrig bör lagra klartextlösenord i din databas; när du lägger till en användare i din databas bör du skapa en hash av lösenordet och lagra hashen.

Observera att roller är inaktiverade i det här exemplet. Om du aktiverar roller kan du göra andra fiffiga saker Tillåt bara användare med administratörsrollen att se adminsidor.



  1. Hur man inaktiverar Change Data Capture (CDC) på en databas i SQL Server - SQL Server Tutorial

  2. Använda utökade händelser för att logga föråldrade funktioner som används i en SQL Server-instans (T-SQL-exempel)

  3. Hur omdirigerar man utdata från DBMS_OUTPUT.PUT_LINE till en fil?

  4. Hur man skapar en lagrad procedur i MySQL med Knex raw