leitura de
Encontrou um problema no conteúdo? Por favor, deixe seu comentário!

Fala pessoal, tudo bom?

Hoje vou tentar explicar pra vocês como configurar o AuthComponent do CakePHP pra criar um sistema de login bem simples mas muito eficiente.

Na minha opinião, o maior problemas de usar o Auth em um sistema/aplicação em português é que seu Model de usuários vai se chamar “Usuario”, “Cliente” ou “Administrador” * e não “User”, então você precisa mudar algumas configurações pra ele [o Auth] funcione de acordo.

* Esses níveis de acesso não deveriam definir o nome do model, que ainda é apenas um usuário.

Tabela de usuários (clientes)

Se você já tem um model/tabela de usuários pode pular para o próximo passo. Se você ainda não tem, essa é uma estrutura que eu recomendo pra quem usar MySQL:

Habilitando o AuthComponent

Recomendo que você insira o componente no seu AppController pois toda a aplicação será controlada/protegida pelo AuthComponent.

Edite (ou crie) o arquivo /app/app_controller.php e defina os componentes que você quer usar, no final da lista coloque o Auth:

Agora começa a parte de configuração e comunicação com o seu model de usuários, administradores ou seja lá qual for o nome.

Configurando o AuthComponent

Ainda dentro do seu AppController você vai configurar o componente dentro de um método (callback) chamado beforeFilter, da seguinte maneira:

Com essas configurações definidas o sistema de login está praticamente pronto! :)

Criando as actions de login e logout

Para criar o formulário de login você precisa definir aquela action de login que você especificou ali em cima, na opção loginAction (linha 24), por exemplo:

Se o nosso model de usuários se chama Cliente, então nossas actions de login e logout estarão no controller de Clientes:

A action de login fica vazia mesmo, e a action de logout apenas redireciona o visitante para a action definida lá no logoutRedirect (linha 36).

Fomulário de Login

A view do formulário de login é extremamente simples e (segundo o nosso exemplo) vai no arquivo /app/views/clientes/login.ctp:

Primeiro nós temos o Session->flash() que irá exibir as mensagens de erro de autenticação (senha inválida, página restrita e etc.)

Depois nós usamos o FormHelper para criar o formulário de login (apontando pra action de login) com os campos de email e senha! :)

Criando seu primeiro usuário

Feito isso o seu sistema de login está pronto mas você precisa criar um usuário para testá-lo, e fazer isso direto no banco de dados não vai funcionar!

Quando você instalou o CakePHP ele deve ter pedido para você modificar a configuração Security.salt, lá na linha 204 do arquivo /app/config/core.php, esse valor é utilizado na hora de encriptar a senha de um usuário antes de salvá-lo no banco de dados e consequentemente também é utilizado na hora de você fazer o login. Por isso é o CakePHP quem precisa criar esse usuário no banco de dados, não adianta tentar fazer isso diretamente no banco.

Para criar um usuário é bem simples: é só você fazer isso dentro de alguma action (de algum controller) do CakePHP, utilizando o método save() do seu model de usuários, por exemplo:

Esse código pode ir dentro do método beforeFilter do seu AppController (após as instruções de configuração do AuthComponent… Mas execute esse código apenas uma vez! Cada vez que esse código for executado o CakePHP irá tentar criar um novo usuário. Execute, verifique no banco de dados se o usuário foi criado e delete o código.

Perceba que utilizamos o método Auth->password() que faz exatamente o que expliquei ali em cima, utiliza o Security.salt para encriptar a senha passada.

Protegendo apenas um prefixo (opcional)

Agora todo o seu sistema estará “bloqueado”, e você precisa fazer login para acessar qualquer tela.

Caso você queira proteger apenas um prefixo (como por exemplo: admin) e não exigir login enquanto o usuário não estiver acessando um action com esse prefixo, coloque o seguinte código após a configuração do AuthComponent:

Isso fará com que o Auth permita acesso à qualquer action quando você não estiver dentro do um prefixo “admin”.

Você também precisará mudar algumas configurações do Auth:

Essa mudança é necessária pois você precisa sair e entrar do prefixo “admin” antes e depois do login/logout.

Pronto! :)

Parabéns, você acaba de fazer um sistema de login utilizando CakePHP! Onde o maior trabalho (na minha opinião) foi criar o usuário, pois configurar o AuthComponent e criar o formulário de login é extremamente simples.

Quer saber mais sobre o CakePHP?

Inscreva-se no meu curso online de CakePHP, o Assando Sites!

Você aprende sem sair de casa, aos domingos ou quando preferir assistir os vídeos gravados em aula. :)

Para saber mais informações sobre o curso, este post aqui no blog.

Um grande abraço e até a próxima!

Thiago Belem / Blog

Thiago Belem


Publicado

Thiago Belem / Blog

Thiago Belem / Blog

Artigos e tutoriais sobre desenvolvimento WEB

Continue lendo