Dancer::Plugin::Auth::Extensible
се грижи за много шаблонен код вместо вас. Можете да стартирате проста система за влизане, без да се налага да пишете свой собствен /login
маршрути, както следва.
Конфигурирайте Dancer::Plugin::Auth::Extensible
Инсталирайте Dancer::Plugin::Database
и Dancer::Plugin::Auth::Extensible::Provider::Database
и добавете това към config.yml
:
session: "YAML"
plugins:
Auth::Extensible:
realms:
users:
provider: 'Database'
disable_roles: 1
Конфигуриране на връзка с база данни
Конфигурирайте връзката си с база данни в environments/development.yml
така че да можете да имате различни конфигурации за разработка и производство. Ето как изглежда конфигурацията за MySQL, като идентификационните данни за връзка (име на база данни, хост, потребителско име и парола) се съхраняват в отделен файл с опции database.cfg
:
plugins:
Database:
dsn: 'dbi:mysql:;mysql_read_default_file=/path/to/database.cfg'
dbi_params:
RaiseError: 1
AutoCommit: 1
За Postgres трябва да използвате .pgpass
файл за съхраняване на вашите идентификационни данни за връзка. Уверете се, че файлът не може да се чете от света. Вижте тази публикация на Stack Overflow
за пример. Тествайте дали вашият файл с идентификационни данни работи на командния ред и дали вашият уеб сървър може да го прочете.
Вашата съществуваща таблица изглежда съответства на предложена схема в документите, но дори и да не стане, можете да коригирате имената на таблиците и колоните в конфигурация .
Заключете маршрутите си
Добавете require_login
ключова дума към маршрут, който искате да защитите. A /login
маршрутът ще се генерира автоматично с основен формуляр за влизане, въпреки че можете да създайте свой собствен
ако желаете.
lib/MyApp.pm
package MyApp;
use Dancer ':syntax';
use Dancer::Plugin::Auth::Extensible;
our $VERSION = '0.1';
get '/' => require_login sub {
template 'index';
};
true;
(Да, това наистина е целият код, който трябва да напишете. Казах ви, че се грижи за много шаблони.)
Crypt::SaltedHash
се използва за автоматично хеширане на пароли. Имайте предвид, че никога не трябва да съхранявате пароли в обикновен текст във вашата база данни; когато добавите потребител към вашата база данни, трябва да генерирате хеш на паролата и да съхраните хеша.
Имайте предвид, че в този пример ролите са деактивирани. Ако активирате ролите, можете да правите други изящни неща като разрешава само на потребители с администраторска роля да преглеждат администраторски страници.