-
Notifications
You must be signed in to change notification settings - Fork 6
Autenticando o usuário
Esse capitulo trata da autenticação do usuário ou verificação da sua identidade. Mais informações na Wikipedia
É forma mais comum de autenticar um usuário é via banco de dados. Na Aplicação de exemplo v2.5 do FormDin apresenta um exemplo completamente funcional.
No seu banco de dados crie uma tabela com no mínimo dois campos
- usuário:
- senha: recomendo no mínimo varchar de 200
As senhas de cada usuário deve ser criptografada utilizando password_hash
- http://php.net/manual/pt_BR/function.password-hash.php
- https://pt.stackoverflow.com/questions/105689/password-hash-ou-crypt-qual-traz-mais-seguran%C3%A7a
No index.php da raiz da sua aplicação deverá incluir as linhas abaixo.
$app->setLoginFile('includes/tela_login.php');
$login = ArrayHelper::get( $_SESSION[APLICATIVO],'LOGIN');
$app->setLoginInfo($login);
Depois de informado o setLoginFile
o formDin sabe que só pode carregar um modulo se tiver um usuários logado. Mesmo o carregamento via parâmetro GET só funciona se tiver um usuário logado.
No arquivo tela login deverá chamar a classe de negócio "Acesso.class.php"
public static function login( $login_user, $pwd_user ) {
$user = Acesso_userDAO::selectByLogin($login_user);
if (password_verify($pwd_user, $user['PWD_USER'][0])) {
$_SESSION[APLICATIVO]['IDUSER'] = $user['IDUSER'][0];
$_SESSION[APLICATIVO]['LOGIN'] = $user['LOGIN_USER'][0];
$msg = 1;
}else{
$msg = 'Login Invalido !';
}
return $msg;
}
Autenticação via LDAP é um tipo de Basic Authentication que acontece em duas etapas.
- Configurar o Apache para receber a senha via LDAP ou Arquivo (simulando LDAP)
- No PHP pegar o usuário informado via
$_SERVER['PHP_AUTH_USER']
mais informações no site do PHP
O que é Basic Authentication ?
- https://pt.stackoverflow.com/questions/254503/o-que-%C3%A9-basic-auth
- https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication
Usando o WAMP. Para configurar a autenticação deve ser realizado os seguintes passos:
- Habilitar os módulos abaixo. Click esquerdo no wamp > Apache 2.4.X > Apache Modules. ATENÇÃO não edite o httpd.conf via Editor
LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule ldap_module modules/mod_ldap.so
sudo a2enmod ldap authnz_ldap
-
sudo vim /etc/apache2/apache2.conf
e incluir o que está abaixo
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
- sudo /etc/init.d/apache2 restart
Criar um arquivo com o nome .htaccess
dentro da pasta da sua aplicação, com o seguinte conteúdo:
AuthName "Informe o seu usuário e senha" AuthBasicProvider ldap AuthType basic AuthLDAPURL "ldap://SERVIDOR/OU=Usuarios,DC=br?sAMAccountName?sub" AuthLDAPBindDN "CN=anoncvs,OU=Usuarios,DC=br" AuthLDAPBindPassword anoncvs AuthLDAPBindAuthoritative off LDAPReferrals off Require valid-user
Pode ser útil em alguns casos no qual o comportamento do sistema está vinculado a um usuário específico. Por exemplo, um determinado erro só acontece para o usuário X. Para essa situação é possível que a aplicação seja autenticada por um arquivo de senhas.
Para configurar a autenticação basta seguir os seguintes passos:
- Criar um arquivo com o nome .htaccess com o seguinte conteúdo
AuthType Basic AuthName "Zona Restrita" AuthUserFile /.htpasswd Require valid-user Options FollowSymLinks Indexes
- Criar arquivo .htpasswd e colocar os logins e senhas no seguinte formato.
tiago:123 lucivaldo:123 joao:123 paulo:123 francisco:123
Atenção:
- o <caminho_aplicacao_servidor> não deve conter espaços em branco.
- Exemplo de caminho valido no Windows com Wamp 3.1.0 "D:/wamp/www/autenticacao_arquivo/.htpasswd"
No formDin você pode pegar as informações do usuário logado usando
$user = ServerHelper::get('PHP_AUTH_USER')
Depois é só passar o usuário logado para os métodos que irão usar essa informação para fazer algo. Como : autorizar ou não acesso ao sistema, listar as telas por perfil de acesso, gravar os dados com o usuário logado e etc etc. O próximo capitulo irá te ajudar resolver o problema do perfil de acesso.
Índice completo - Aprendendo formDin em etapas
Conheça os projetos relacionados ao formDin
- FormDin Last Release - ultima versão estável
- SysGen - Gerador de código para FormDin
- formDocker - Ambiente para o FormDin em Docker
- FormDin5 - FormDin 5 sobre o Adianti FrameWork
- SysGenAd - Gerador de código para FormDin 5 usando o Adianti FrameWork
Aprendendo formDin em etapas
- Baixando o formDin
- Instalado e Configurando Ambiente de Desenvolvimento
- Usando XDebug
- Informações técnicas
- Primeira Aplicação
- Entendendo a primeira aplicação
- Criando Menu Básico
- Conectando com um Banco de Dados
- Usando DAO e VO
- Grid Básico
- Componentes Básicos
- O Formulário
- Relatórios em PDF
- Componentes Avançados
- Autenticando o usuário
- Perfis de acesso
- Grid Avançado
- Conectando com mais um Banco de Dados ao mesmo tempo
- Automatizando a criação de aplicação
- Segurança
- Layout e CSS
- API REST
- Arquitetura do FormDin
- Versões e versionamento
- Usando o Eclipse
- Usando o VS Code
- História do formDin
- Usando PHPUnit para fazer testes unitários
- Usando Composer
- Usando Docker
- Microsoft SQL Server