Dancer::Plugin::Auth::Extensible
kümmert sich um eine Menge Boilerplate-Code für Sie. Sie können ein einfaches Anmeldesystem zum Laufen bringen, ohne einen eigenen /login
schreiben zu müssen Routen wie folgt.
Konfiguriere Dancer::Plugin::Auth::Extensible
Installieren Sie Dancer::Plugin::Database
und Dancer::Plugin::Auth::Extensible::Provider::Database
und fügen Sie dies zu config.yml
hinzu :
session: "YAML"
plugins:
Auth::Extensible:
realms:
users:
provider: 'Database'
disable_roles: 1
Datenbankverbindung konfigurieren
Konfigurieren Sie Ihre Datenbankverbindung in environments/development.yml
damit Sie unterschiedliche Konfigurationen für Entwicklung und Produktion haben können. So sieht die Konfiguration für MySQL aus, wobei die Verbindungsinformationen (Datenbankname, Host, Benutzername und Passwort) in einer separaten Optionsdatei database.cfg
gespeichert sind :
plugins:
Database:
dsn: 'dbi:mysql:;mysql_read_default_file=/path/to/database.cfg'
dbi_params:
RaiseError: 1
AutoCommit: 1
Für Postgres sollten Sie einen .pgpass
Datei zum Speichern Ihrer Verbindungsdaten. Stellen Sie sicher, dass die Datei nicht weltweit lesbar ist. Siehe diesen Stack Overflow-Beitrag
zum Beispiel. Testen Sie, ob Ihre Datei mit Anmeldeinformationen auf der Befehlszeile funktioniert und ob Ihr Webserver sie lesen kann.
Ihre vorhandene Tabelle scheint dem Vorgeschlagenes Schema in der Dokumentation, aber selbst wenn dies nicht der Fall ist, können Sie die Tabellen- und Spaltennamen im Konfiguration .
Sperren Sie Ihre Routen
Fügen Sie require_login
hinzu Schlüsselwort zu einer Route, die Sie schützen möchten. Ein /login
Route wird automatisch mit einem einfachen Anmeldeformular generiert, obwohl Sie erstellen Sie Ihre eigenen
wenn du magst.
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, das ist wirklich der gesamte Code, den Sie schreiben müssen. Ich habe Ihnen gesagt, dass er sich um eine Menge Textbausteine kümmert.)
Crypt::SaltedHash
wird verwendet, um Passwörter automatisch zu hashen. Beachten Sie, dass Sie niemals Klartext-Passwörter in Ihrer Datenbank speichern sollten; Wenn Sie Ihrer Datenbank einen Benutzer hinzufügen, sollten Sie einen Hash des Passworts generieren und den Hash speichern.
Beachten Sie, dass Rollen in diesem Beispiel deaktiviert sind. Wenn Sie Rollen aktivieren, können Sie andere raffinierte Dinge tun wie nur Benutzern mit der Admin-Rolle erlauben, Admin-Seiten anzuzeigen.