Dancer::Plugin::Auth::Extensible
s'occupe de beaucoup de code passe-partout pour vous. Vous pouvez obtenir un système de connexion simple et opérationnel sans avoir à écrire votre propre /login
itinéraires comme suit.
Configurer Dancer::Plugin::Auth::Extensible
Installez Dancer::Plugin::Database
et Dancer::Plugin::Auth::Extensible::Provider::Database
et ajoutez ceci à config.yml
:
session: "YAML"
plugins:
Auth::Extensible:
realms:
users:
provider: 'Database'
disable_roles: 1
Configurer la connexion à la base de données
Configurez votre connexion à la base de données dans environments/development.yml
afin que vous puissiez avoir différentes configurations pour le développement et la production. Voici à quoi ressemble la configuration pour MySQL, avec les identifiants de connexion (nom de la base de données, hôte, nom d'utilisateur et mot de passe) stockés dans un fichier d'options séparé database.cfg
:
plugins:
Database:
dsn: 'dbi:mysql:;mysql_read_default_file=/path/to/database.cfg'
dbi_params:
RaiseError: 1
AutoCommit: 1
Pour Postgres, vous devez utiliser un .pgpass
fichier pour stocker vos identifiants de connexion. Assurez-vous que le fichier n'est pas lisible par tous. Voir ce message Stack Overflow
à titre d'exemple. Vérifiez que votre fichier d'informations d'identification fonctionne sur la ligne de commande et que votre serveur Web peut le lire.
Votre table existante semble être conforme au schéma suggéré dans la documentation, mais même si ce n'est pas le cas, vous pouvez ajuster les noms de table et de colonne dans le configuration .
Verrouillez vos itinéraires
Ajoutez le require_login
mot-clé à une route que vous souhaitez protéger. Un /login
route sera généré automatiquement avec un formulaire de connexion de base, bien que vous puissiez créez les vôtres
si vous le souhaitez.
lib/MonApp.pm
package MyApp;
use Dancer ':syntax';
use Dancer::Plugin::Auth::Extensible;
our $VERSION = '0.1';
get '/' => require_login sub {
template 'index';
};
true;
(Oui, c'est vraiment tout le code que vous avez à écrire. Je vous ai dit qu'il prend en charge beaucoup de passe-partout.)
Crypt::SaltedHash
est utilisé pour hacher automatiquement les mots de passe. Notez que vous ne devez jamais stocker de mots de passe en clair dans votre base de données ; lorsque vous ajoutez un utilisateur à votre base de données, vous devez générer un hachage du mot de passe et stocker le hachage.
Notez que les rôles sont désactivés dans cet exemple. Si vous activez les rôles, vous pouvez faire d'autres choses intéressantes comme autoriser uniquement les utilisateurs ayant le rôle d'administrateur à afficher les pages d'administration.