Dancer::Plugin::Auth::Extensible
regelt veel boilerplate code voor je. U kunt een eenvoudig inlogsysteem in gebruik nemen zonder dat u uw eigen /login
hoeft te schrijven routes als volgt.
Configureer Dancer::Plugin::Auth::Extensible
Installeer Dancer::Plugin::Database
en Dancer::Plugin::Auth::Extensible::Provider::Database
en voeg dit toe aan config.yml
:
session: "YAML"
plugins:
Auth::Extensible:
realms:
users:
provider: 'Database'
disable_roles: 1
Configureer databaseverbinding
Configureer uw databaseverbinding in environments/development.yml
zodat u verschillende configuraties kunt hebben voor ontwikkeling en productie. Zo ziet de configuratie eruit voor MySQL, met de verbindingsgegevens (databasenaam, host, gebruikersnaam en wachtwoord) opgeslagen in een apart optiebestand database.cfg
:
plugins:
Database:
dsn: 'dbi:mysql:;mysql_read_default_file=/path/to/database.cfg'
dbi_params:
RaiseError: 1
AutoCommit: 1
Voor Postgres moet u een .pgpass
bestand om uw verbindingsgegevens op te slaan. Zorg ervoor dat het bestand niet voor de hele wereld leesbaar is. Zie dit Stack Overflow-bericht
bijvoorbeeld. Test of uw bestand met inloggegevens werkt op de opdrachtregel en of uw webserver het kan lezen.
Uw bestaande tabel lijkt te voldoen aan de suggestie schema in de documenten, maar zelfs als dat niet het geval is, kunt u de tabel- en kolomnamen aanpassen in de configuratie .
Vergrendel je routes
Voeg de require_login
. toe trefwoord naar een route die u wilt beschermen. Een /login
route wordt automatisch gegenereerd met een eenvoudig inlogformulier, hoewel u maak uw eigen
als je wilt.
lib/MijnApp.pm
package MyApp;
use Dancer ':syntax';
use Dancer::Plugin::Auth::Extensible;
our $VERSION = '0.1';
get '/' => require_login sub {
template 'index';
};
true;
(Ja, dat is echt alle code die je hoeft te schrijven. Ik heb je gezegd dat het veel boilerplate oplost.)
Crypt::SaltedHash
wordt gebruikt om wachtwoorden automatisch te hashen. Merk op dat u nooit leesbare wachtwoorden in uw database moet opslaan; wanneer u een gebruiker aan uw database toevoegt, moet u een hash van het wachtwoord genereren en de hash opslaan.
Houd er rekening mee dat rollen in dit voorbeeld zijn uitgeschakeld. Als je rollen inschakelt, kun je andere handige dingen doen zoals alleen gebruikers met de beheerdersrol toestaan om beheerderspagina's te bekijken.