PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Um sistema simples de login/autorização usando Dancer e Postgres


Dancer::Plugin::Auth::Extensible cuida de muito código clichê para você. Você pode colocar um sistema de login simples em funcionamento sem ter que escrever nenhum de seus próprios /login rotas como segue.

Configurar Dancer::Plugin::Auth::Extensible


Instale o Dancer::Plugin::Database e Dancer::Plugin::Auth::Extensible::Provider::Database e adicione isso a config.yml :
session: "YAML"

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

Configurar conexão de banco de dados


Configure sua conexão de banco de dados em environments/development.yml para que você possa ter configurações diferentes para desenvolvimento e produção. É assim que a configuração se parece com o MySQL, com as credenciais de conexão (nome do banco de dados, host, nome de usuário e senha) armazenadas em um arquivo de opções separado database.cfg :
plugins:
  Database:
    dsn: 'dbi:mysql:;mysql_read_default_file=/path/to/database.cfg'
    dbi_params:
      RaiseError: 1
      AutoCommit: 1

Para Postgres, você deve usar um .pgpass arquivo para armazenar suas credenciais de conexão. Certifique-se de que o arquivo não seja legível pelo mundo. Veja esta postagem do Stack Overflow Por exemplo. Teste se o arquivo de credenciais funciona na linha de comando e se o servidor da Web pode lê-lo.

Sua tabela existente parece estar em conformidade com o esquema sugerido nos documentos, mas mesmo que isso não aconteça, você pode ajustar os nomes das tabelas e colunas no configuração .

Bloqueie suas rotas


Adicione o require_login palavra-chave para uma rota que você deseja proteger. Um /login rota será gerada automaticamente com um formulário de login básico, embora você possa crie o seu próprio se você gostar.

lib/MyApp.pm
package MyApp;
use Dancer ':syntax';

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

our $VERSION = '0.1';

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

true;

(Sim, esse é realmente todo o código que você precisa escrever. Eu lhe disse que trata de muito clichê.)

Crypt::SaltedHash é usado para hash de senhas automaticamente. Observe que você nunca deve armazenar senhas de texto simples em seu banco de dados; quando você adiciona um usuário ao seu banco de dados, você deve gerar um hash da senha e armazenar o hash.

Observe que as funções estão desabilitadas neste exemplo. Se você habilitar funções, poderá fazer outras coisas interessantes como permitir que apenas usuários com a função de administrador visualizem as páginas de administração.