Dancer::Plugin::Auth::Extensible
tager sig af en masse boilerplate kode for dig. Du kan få et simpelt login-system op at køre uden at skulle skrive noget af dit eget /login
ruter som følger.
Konfigurer Dancer::Plugin::Auth::Extensible
Installer Dancer::Plugin::Database
og Dancer::Plugin::Auth::Extensible::Provider::Database
og føj dette til config.yml
:
session: "YAML"
plugins:
Auth::Extensible:
realms:
users:
provider: 'Database'
disable_roles: 1
Konfigurer databaseforbindelse
Konfigurer din databaseforbindelse i environments/development.yml
så du kan have forskellige konfigurationer til dev og produktion. Sådan ser konfigurationen ud for MySQL, med forbindelsesoplysningerne (databasenavn, vært, brugernavn og adgangskode) gemt i en separat indstillingsfil database.cfg
:
plugins:
Database:
dsn: 'dbi:mysql:;mysql_read_default_file=/path/to/database.cfg'
dbi_params:
RaiseError: 1
AutoCommit: 1
Til Postgres skal du bruge en .pgpass
fil for at gemme dine forbindelsesoplysninger. Sørg for, at filen ikke er verdenslæselig. Se dette Stack Overflow-indlæg
for et eksempel. Test, at din legitimationsfil fungerer på kommandolinjen, og at din webserver kan læse den.
Din eksisterende tabel ser ud til at være i overensstemmelse med foreslået skema i dokumenterne, men selvom det ikke gør det, kan du justere tabel- og kolonnenavnene i konfiguration .
Lås dine ruter
Tilføj require_login
nøgleord til en rute, du vil beskytte. En /login
rute vil blive genereret automatisk med en grundlæggende login-formular, selvom du kan opret din egen
hvis du vil.
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 er virkelig alt den kode, du skal skrive. Jeg fortalte dig, at den tager sig af en masse kedelplader.)
Crypt::SaltedHash
bruges til at hash adgangskoder automatisk. Bemærk, at du aldrig bør gemme plaintext passwords i din database; når du tilføjer en bruger til din database, bør du generere en hash af adgangskoden og gemme hashen.
Bemærk, at roller er deaktiveret i dette eksempel. Hvis du aktiverer roller, kan du gøre andre smarte ting tillade kun brugere med admin-rollen at se admin-sider.