sql >> Database >  >> RDS >> PostgreSQL

Een eenvoudig inlog-/autorisatiesysteem met Dancer en Postgres

Dancer::Plugin::Auth::Extensible regelt veel boilerplate code voor je. U kunt een eenvoudig inlogsysteem in gebruik nemen zonder dat u uw eigen /login hoeft te schrijven routes als volgt.

Configureer Dancer::Plugin::Auth::Extensible

Installeer Dancer::Plugin::Database en Dancer::Plugin::Auth::Extensible::Provider::Database en voeg dit toe aan config.yml :

session: "YAML"

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

Configureer databaseverbinding

Configureer uw databaseverbinding in environments/development.yml zodat u verschillende configuraties kunt hebben voor ontwikkeling en productie. Zo ziet de configuratie eruit voor MySQL, met de verbindingsgegevens (databasenaam, host, gebruikersnaam en wachtwoord) opgeslagen in een apart optiebestand database.cfg :

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

Voor Postgres moet u een .pgpass bestand om uw verbindingsgegevens op te slaan. Zorg ervoor dat het bestand niet voor de hele wereld leesbaar is. Zie dit Stack Overflow-bericht bijvoorbeeld. Test of uw bestand met inloggegevens werkt op de opdrachtregel en of uw webserver het kan lezen.

Uw bestaande tabel lijkt te voldoen aan de suggestie schema in de documenten, maar zelfs als dat niet het geval is, kunt u de tabel- en kolomnamen aanpassen in de configuratie .

Vergrendel je routes

Voeg de require_login . toe trefwoord naar een route die u wilt beschermen. Een /login route wordt automatisch gegenereerd met een eenvoudig inlogformulier, hoewel u maak uw eigen als je wilt.

lib/MijnApp.pm

package MyApp;
use Dancer ':syntax';

use Dancer::Plugin::Auth::Extensible;

our $VERSION = '0.1';

get '/' => require_login sub {
    template 'index';
};

true;

(Ja, dat is echt alle code die je hoeft te schrijven. Ik heb je gezegd dat het veel boilerplate oplost.)

Crypt::SaltedHash wordt gebruikt om wachtwoorden automatisch te hashen. Merk op dat u nooit leesbare wachtwoorden in uw database moet opslaan; wanneer u een gebruiker aan uw database toevoegt, moet u een hash van het wachtwoord genereren en de hash opslaan.

Houd er rekening mee dat rollen in dit voorbeeld zijn uitgeschakeld. Als je rollen inschakelt, kun je andere handige dingen doen zoals alleen gebruikers met de beheerdersrol toestaan ​​om beheerderspagina's te bekijken.



  1. MySQL - Vind punten binnen een straal van de database

  2. Wat is het PL/SQL API-verschil tussen Oracle Express Edition (XE) en Standard Edition (SE)?

  3. Krijg werknemers die onder het gemiddelde salaris zitten na een verhoging

  4. In MySQL is er een functie zoals niveau in Oracle?