Ir para conteúdo

POWERED BY:

Arquivado

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

Alexandre Di Salvo

[Resolvido] Problema com Auth

Recommended Posts

Olá olá olá...

 

O problema agora é com o componente Auth. Já fiz de tudo, mas quando tento implementar um login, eu entro com a url e ele me joga para um controller chamado 'useres', mas esse controller não existe, sim existe o 'usuarios'. Onde eu posso definir que ele chame o controller 'usuarios' ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolver. O problema era que estava usando a beforeRender() e não a beforeFilter().

 

Eu to passando 2 valores, vindos do formulário: data[usuario][login] e data[usuario][senha], ainda não consegui enxergar onde ele faz a verificação para liberar o acesso ao usuário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como assim?

Se você alterou os campos padrões de senha e user (que são: password e username) você deve especificar isso:

$this->Auth->fields = array(
     'password' => 'senha',
     'username' => 'login'
);

E lembre: Sempre no beforeFilter(), apenas na versão 1.3+ no Cake que você pode passar como parâmetro de configuração diretamente para o component.

 

Sugiro que veja: http://forum.imasters.com.br/index.php?/topic/367685-tutorial-utilizando-o-auth-componente-no-cakephp/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como assim?

Se você alterou os campos padrões de senha e user (que são: password e username) você deve especificar isso:

$this->Auth->fields = array(
 	'password' => 'senha',
 	'username' => 'login'
);

E lembre: Sempre no beforeFilter(), apenas na versão 1.3+ no Cake que você pode passar como parâmetro de configuração diretamente para o component.

 

Sugiro que veja: http://forum.imaster...nte-no-cakephp/

 

 

Pois é caro Lucas, eu mudei os campos conforme você postou acima, mas não funcionou. Estou usando minhas telas em ExtJs, ao invés das .ctp, mas façço meu código Ext me devolver valores no formato do Cake, data[usuario][login] por exemplo.

 

O login não funciona.

 

Segue meu app controller, no beforeFilter():

 

 

function beforeFilter(){
        $this->Auth->userModel = 'Usuario';
        
        $this->Auth->authError = 'Area Restrita! Efetue login!'; // Mensagem ao entrar em area restrita
        $this->Auth->loginError = 'Nome de usuario ou senha não conferem!'; // Mensagem quando não se autenticar
        
        $this->Auth->fields = array(
            'password' => 'senha',
            'username' => 'login'
        );
        
        /**
		* Redirecionamento após login
		*/
		$this->Auth->loginRedirect = array(
			'controller' => 'homes',
			'action' => 'index',
			Configure::read('Routing.admin') => true
		);
		
		$this->Auth->userScope = array('Usuario.status' => 'A');
        
    }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas que erro está aparecendo? (mesmo que não seja uma mensagem de erro do PHP)

 

Desabilitei minhas visões em ExtJS e voltei ao formulário do Cake a título de testes. Pq se funcionar no form dele irá funcionar no ExtJS.

 

Mudei somente umas coisinhas no form:

 

<h2>EFETUE LOGIN!</h2>
<?php
$session->flash('auth'); // Exibimos qualquer erro que possa ter ocorrido
echo $form->create('Usuario' , array('action' => 'login'));
echo $form->input('login');
echo $form->input('senha');
echo $form->end('LOGAR');
?>

Mudei o create, e dois inputs: login e senha.

 

Quando dou um submit no formulário, ele me mostra a mensagem de ''Nome de usuario ou senha não conferem!'', porém o usuário e senha são válidos o que me leva a crer que ele não está consultando a tabela Usuario da minha base de dados.

 

 

Só uma observação: Eu preciso usar o componente ACL juntamente com o Auth somente para fazer o login? Ou somente o Auth me bastaria? Lembrando que só preciso de login.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só Auth basta.

Alexandre, de uma olhada no debug e veja se o SQL é realmente oque você espera. Pegue a senha gerada (hash) e veja se combina com o do DB. Este erro é apenas erro de não combinação com o do db.

Para exibir o debug:

echo $cakeDebug;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só Auth basta.

Alexandre, de uma olhada no debug e veja se o SQL é realmente oque você espera. Pegue a senha gerada (hash) e veja se combina com o do DB. Este erro é apenas erro de não combinação com o do db.

Para exibir o debug:

echo $cakeDebug;

Então, comparei as duas senhas e são totalmente diferentes. No banco eu guardo uma senha normal do tipo: " teste " e quando ele vai dá o select já está com o hash do valor que informei no form.

 

o código da minha function login segue ai para você dá uma olhada:

 

function login(){
        if ($this->data){
            $results = $this->Usuario->findByLogin($this->data['Usuario']['login']);
            if ($results && $results['Usuario']['senha'] == md5($this->data['Usuario']['senha'])){
                $this->Session->write('usuario', $this->data['Usuario']['login']);
                //$this->redirect(array('action' => 'index'), null, true);
                $this->redirect(array('controller' => 'homes', 'action' => 'index'));
                $this->set('error', false);
                //$this->redirect('/homes/index');
                //$this->Auth->loginRedirect = array('action' => 'index', 'controller' => 'homes');
            } else {
                $this->set('error', true);
            }
        }
    }

O que acha?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se me lembro bem a action login vai ser completamente ignorada. Pois o cake ja cuida disso para você (logar). Lembre-se que ele não gera só o hash, ele também usa o valor de Security.salt definido no app/config/core.php para reforçar a segurança da sua senha.

Ele por padrão vai usar como algoritimo sha1. Olha aquele tuto que passei que lá mostra como mudar pra md5 ou outro.

 

Aí para logar faz o seguinte:

 

1 - Tente logar com as informações que você deseja

2 - Não dará certo, porém agora você terá as informações (ja com a senha hash) no debug

3 - Copie as informações do debug e insira no Db.

4 - Certifique-se de que a senha do DB está igual a que você pôs (o campo da tabela pode não ter length o suficiente)

5 - Logue-se normalmente

6 - Seja feliz

 

:)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se me lembro bem a action login vai ser completamente ignorada. Pois o cake ja cuida disso para você (logar). Lembre-se que ele não gera só o hash, ele também usa o valor de Security.salt definido no app/config/core.php para reforçar a segurança da sua senha.

Ele por padrão vai usar como algoritimo sha1. Olha aquele tuto que passei que lá mostra como mudar pra md5 ou outro.

 

Aí para logar faz o seguinte:

 

1 - Tente logar com as informações que você deseja

2 - Não dará certo, porém agora você terá as informações (ja com a senha hash) no debug

3 - Copie as informações do debug e insira no Db.

4 - Certifique-se de que a senha do DB está igual a que você pôs (o campo da tabela pode não ter length o suficiente)

5 - Logue-se normalmente

6 - Seja feliz

 

:)

 

Lucas,

 

Valeu! Eu consegui fazer. Estudei um pouco mais a fundo isso e também vi outros exemplos de como fazer. Obrigado.

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.