Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

P3rukao

[Resolvido] Login com Auth Componente no CakePhp 1.3.4

Recommended Posts

Daew,

 

eu estou querendo montar um sistema simples com área administrativa e páginas de acesso público (praticamente como num blog, só para teste), e já segui diversos tutoriais que encontrei pela web ensinado como fazer mas nenhum funciona. A versão do Cake que estou utilizando é a 1.3.4.

Já fiz exatamente como no exemplo postado pelo @lucaswxp nesse tuto: http://forum.imasters.com.br/index.php?/topic/367685-tutorial-utilizando-o-auth-componente-no-cakephp/ , mas o sistema não funciona. Sempre dá como se os dados de acesso estivessem inválidas, mesmo não estando, e não faz o login.

 

Mudou alguma coisa na forma de usar o Auth nessa última versão?

É melhor utilizar o Auth Componente para fazer sistemas com login e senha, ou usar do jeito tradicional de pegar os dados do form e verificar no banco manualmente?

Compartilhar este post


Link para o post
Compartilhar em outros sites

kra,

 

Esses dias estava com o mesmo problema, li e reli o book.cakephp.org/pt umas 2 vezes, cheguei até refazer o projeto, já que estava no começo e não consegui fazer o login. Depois de muita luta, consegui resolver por acaso com a dica deste post http://forum.imaster...erdendo-sessao/, alterando o /config/core.php para:

 

 configure::write('Security.level', 'high');

 

depois disso funcionou perfeitamente, aqui meu código dos controllers:

app_controller.php


<?php
class AppController extends Controller{
 var $components = array('Auth','Session');

 function beforeFilter() {
   Security::setHash('sha256');
   $this->Auth->loginRedirect = array('controller' => 'home', 'action' => 'index');
   $this->Auth->loginError = 'Erro ao logar, usuário ou senha não está correto!';
   $this->Auth->authError = 'Erro ao acessar, você não possui permissão de acesso';
   $this->Auth->flashElement = 'error';
 }


}

?>

users_controller.php


<?php
class UsersController extends AppController{
 var $name = 'Users';
 var $components = array('Auth');

 function beforeFilter(){
   parent::beforeFilter();
   $this->Auth->allow('login','register');
   $this->Auth->autoRedirect = false;
 }

 function index() {
   $this->Session->setFlash('Você já está logado','success');
 }

 function login(){
  	if(!empty($this->data)) {
         if($this->Auth->login($this->data) == true) {
           $this->Auth->redirect();
         } else {
           $message = __($this->Session->read('Message.auth.message'), true);
         }
  	}
 }

 function logout(){
   $this->redirect($this->Auth->logout());
 }

 function register(){
   if(!empty ($this->data)){
     if($this->data['User']['password'] == $this->Auth->password($this->data['User']['password_confirm'])){
       $this->User->create();
    	if($this->User->save($this->data)){
      	$this->Session->setFlash('Usuário criado com sucesso','success');
      	$this->redirect('index');
    	}  else {
      	$this->Session->setFlash('Erro ao criar usuário, favor tentar mais tarde','error');
    	}
     }
   }
 }
}
?>

 

 

versão do meu CakePHP: 1.3.5

 

Espero ter ajudado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Hudson, na verdade eu já consegui resolver o problema, que, aliás, é bem simples.

 

O problema estava na criação do usuário, que eu havia pego de outro sistema de testes. Na criação da senha, eu só "encriptei" a senha do usuário sem concatenar com o HASH/SALT que o cake disponibiliza para aumentar a segurança.

 

Para saber se a senha está sendo "encriptada" corretamente é só fazer isso:


<?php
$salt = Configure::read('Security.salt');
$minhasenha = 'admin';

echo sha1($salt.$minhasenha); //Concatenação manual, para testes
echo '<br>'.Security::hash($minhasenha, 'sha1', true); // Esse é o resultado final que o cake gera, ao se utilizar os métodos padrões de adição de usuário
?>

 

Mas valeu aí pela dica. ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.