sql >> Database teknologi >  >> RDS >> PostgreSQL

Et simpelt login/autorisationssystem ved hjælp af Dancer og Postgres

Dancer::Plugin::Auth::Extensible tager sig af en masse boilerplate kode for dig. Du kan få et simpelt login-system op at køre uden at skulle skrive noget af dit eget /login ruter som følger.

Konfigurer Dancer::Plugin::Auth::Extensible

Installer Dancer::Plugin::Database og Dancer::Plugin::Auth::Extensible::Provider::Database og føj dette til config.yml :

session: "YAML"

plugins:
  Auth::Extensible:
    realms:
      users:
        provider: 'Database'
        disable_roles: 1

Konfigurer databaseforbindelse

Konfigurer din databaseforbindelse i environments/development.yml så du kan have forskellige konfigurationer til dev og produktion. Sådan ser konfigurationen ud for MySQL, med forbindelsesoplysningerne (databasenavn, vært, brugernavn og adgangskode) gemt i en separat indstillingsfil database.cfg :

plugins:
  Database:
    dsn: 'dbi:mysql:;mysql_read_default_file=/path/to/database.cfg'
    dbi_params:
      RaiseError: 1
      AutoCommit: 1

Til Postgres skal du bruge en .pgpass fil for at gemme dine forbindelsesoplysninger. Sørg for, at filen ikke er verdenslæselig. Se dette Stack Overflow-indlæg for et eksempel. Test, at din legitimationsfil fungerer på kommandolinjen, og at din webserver kan læse den.

Din eksisterende tabel ser ud til at være i overensstemmelse med foreslået skema i dokumenterne, men selvom det ikke gør det, kan du justere tabel- og kolonnenavnene i konfiguration .

Lås dine ruter

Tilføj require_login nøgleord til en rute, du vil beskytte. En /login rute vil blive genereret automatisk med en grundlæggende login-formular, selvom du kan opret din egen hvis du vil.

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, det er virkelig alt den kode, du skal skrive. Jeg fortalte dig, at den tager sig af en masse kedelplader.)

Crypt::SaltedHash bruges til at hash adgangskoder automatisk. Bemærk, at du aldrig bør gemme plaintext passwords i din database; når du tilføjer en bruger til din database, bør du generere en hash af adgangskoden og gemme hashen.

Bemærk, at roller er deaktiveret i dette eksempel. Hvis du aktiverer roller, kan du gøre andre smarte ting tillade kun brugere med admin-rollen at se admin-sider.



  1. Sådan tjekker du efter Er ikke null og er ikke tom streng i SQL-serveren?

  2. Vælg specifik kolonne fra specifik række ved hjælp af gamle mysql_* API

  3. SQL Server 2012 kolonneidentitetsstigning springer fra 6 til 1000+ på 7. indtastning

  4. Korrekt måde at gemme en tidszone i en database?