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.