PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Sistem Login/Otorisasi Sederhana menggunakan Dancer dan Postgres

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgresQL SQL:Mengonversi hasil ke array

  2. Masalah dengan kueri penyisipan PostgreSQL

  3. Ganti karakter dengan string multi-karakter

  4. Menyortir nilai nol setelah yang lainnya, kecuali spesial

  5. Masukkan Objek PostGIS (mis. ST_GeomFromText) dari variabel baris dalam skrip plpgsql