Dancer::Plugin::Auth::Extensible
menangani banyak kode boilerplate untuk Anda. Anda dapat mengaktifkan dan menjalankan sistem login sederhana tanpa harus menulis /login
Anda sendiri rute sebagai berikut.
Konfigurasikan Dancer::Plugin::Auth::Extensible
Instal Dancer::Plugin::Database
dan Dancer::Plugin::Auth::Extensible::Provider::Database
dan tambahkan ini ke config.yml
:
session: "YAML"
plugins:
Auth::Extensible:
realms:
users:
provider: 'Database'
disable_roles: 1
Konfigurasikan koneksi database
Konfigurasikan koneksi database Anda di environments/development.yml
sehingga Anda dapat memiliki konfigurasi yang berbeda untuk dev dan produksi. Seperti inilah konfigurasi untuk MySQL, dengan kredensial koneksi (nama database, host, nama pengguna, dan kata sandi) disimpan dalam file opsi terpisah database.cfg
:
plugins:
Database:
dsn: 'dbi:mysql:;mysql_read_default_file=/path/to/database.cfg'
dbi_params:
RaiseError: 1
AutoCommit: 1
Untuk Postgres, Anda harus menggunakan .pgpass
file untuk menyimpan kredensial koneksi Anda. Pastikan file tidak dapat dibaca dunia. Lihat postingan Stack Overflow ini
untuk contoh. Uji apakah file kredensial Anda berfungsi pada baris perintah dan server web Anda dapat membacanya.
Tabel Anda yang ada tampaknya sesuai dengan skema yang disarankan di dokumen, tetapi meskipun tidak, Anda dapat menyesuaikan nama tabel dan kolom di konfigurasi .
Kunci rute Anda
Tambahkan require_login
kata kunci ke rute yang ingin Anda lindungi. Sebuah /login
rute akan dibuat secara otomatis dengan formulir login dasar, meskipun Anda dapat buat sendiri
jika Anda suka.
lib/MyApp.pm
package MyApp;
use Dancer ':syntax';
use Dancer::Plugin::Auth::Extensible;
our $VERSION = '0.1';
get '/' => require_login sub {
template 'index';
};
true;
(Ya, hanya itu kode yang harus Anda tulis. Sudah saya katakan bahwa itu menangani banyak boilerplate.)
Crypt::SaltedHash
digunakan untuk hash password secara otomatis. Perhatikan bahwa Anda tidak boleh menyimpan kata sandi plaintext di database Anda; saat Anda menambahkan pengguna ke database Anda, Anda harus membuat hash kata sandi dan menyimpan hash tersebut.
Perhatikan bahwa peran dinonaktifkan dalam contoh ini. Jika Anda mengaktifkan peran, Anda dapat melakukan hal bagus lainnya seperti hanya mengizinkan pengguna dengan peran admin untuk melihat halaman admin.