Dancer::Plugin::Auth::Extensible
si prende cura di un sacco di codice boilerplate per te. Puoi ottenere un semplice sistema di accesso attivo e funzionante senza dover scrivere il tuo /login
percorsi come segue.
Configura Dancer::Plugin::Auth::Extensible
Installa Dancer::Plugin::Database
e Dancer::Plugin::Auth::Extensible::Provider::Database
e aggiungilo a config.yml
:
session: "YAML"
plugins:
Auth::Extensible:
realms:
users:
provider: 'Database'
disable_roles: 1
Configura la connessione al database
Configura la connessione al database in environments/development.yml
in modo da poter avere diverse configurazioni per lo sviluppo e la produzione. Ecco come appare la configurazione per MySQL, con le credenziali di connessione (nome database, host, nome utente e password) memorizzate in un file di opzioni separato database.cfg
:
plugins:
Database:
dsn: 'dbi:mysql:;mysql_read_default_file=/path/to/database.cfg'
dbi_params:
RaiseError: 1
AutoCommit: 1
Per Postgres, dovresti usare un .pgpass
file per memorizzare le credenziali di connessione. Assicurati che il file non sia leggibile dal mondo intero. Vedi questo post di Stack Overflow
per un esempio. Verifica che il tuo file delle credenziali funzioni sulla riga di comando e che il tuo server web possa leggerlo.
La tua tabella esistente sembra conforme a schema suggerito nei documenti, ma anche in caso contrario, puoi modificare i nomi delle tabelle e delle colonne in configurazione .
Blocca i tuoi percorsi
Aggiungi il require_login
parola chiave a un percorso che si desidera proteggere. Un /login
il percorso verrà generato automaticamente con un modulo di accesso di base, anche se puoi crea il tuo
se ti va.
lib/MyApp.pm
package MyApp;
use Dancer ':syntax';
use Dancer::Plugin::Auth::Extensible;
our $VERSION = '0.1';
get '/' => require_login sub {
template 'index';
};
true;
(Sì, questo è davvero tutto il codice che devi scrivere. Te l'avevo detto che si occupa di un sacco di standard.)
Crypt::SaltedHash
viene utilizzato per eseguire l'hashing delle password automaticamente. Nota che non dovresti mai memorizzare password in chiaro nel tuo database; quando aggiungi un utente al tuo database, dovresti generare un hash della password e archiviare l'hash.
Si noti che i ruoli sono disabilitati in questo esempio. Se abiliti i ruoli, puoi fare altre belle cose come consentire solo agli utenti con il ruolo di amministratore di visualizzare le pagine di amministrazione.