chamuska 5 Denunciar post Postado Abril 30, 2012 PEssoal, no cake 1.3 eu sempre consigo fazer autenticação de usuarios no app_controller usando o Auth, mas estou testando no cake 2.1 e não estou conseguindo. Quando eu tento acessar as página, em vez dele direcionar para o controller usuarios ele direciona para o controller users, parece que ele não está pegando o valor setado em 'userModel'. Não sei o que está errado, segue o codigo do AppController: class AppController extends Controller { public $components = array( 'Session', 'Auth' => array( 'fields' => array('password' => 'senha', 'username' => 'email'), 'userModel' => array('usuarios'), 'loginRedirect' => array('controller' => 'usuarios', 'action' => 'index'), 'logoutRedirect' => array('controller' => 'usuarios', 'action' => 'index'), 'authError' => 'Você não tem acesso a página', 'authorize' => array('Controller') ) ); public function isAuthorized($user) { return true; } public function beforeFilter(){ $this->Auth->allow('index','view'); } } Pelo menos ele não autentica para os index e view dos CRUDs, como foi definido! Valeu! Compartilhar este post Link para o post Compartilhar em outros sites
Jonatha Ferreira 1 Denunciar post Postado Abril 30, 2012 Muita coisa mudou no cakephp da versão 1.3 para 2.1 Leia este tópico do manual do cake em pt-br Autenticação simples e Autorização da Aplicação E caso tenha duvida sobre configuração do componete leia este em en AuthComponent Compartilhar este post Link para o post Compartilhar em outros sites
chamuska 5 Denunciar post Postado Abril 30, 2012 Muita coisa mudou no cakephp da versão 1.3 para 2.1 Leia este tópico do manual do cake em pt-br Autenticação simples e Autorização da Aplicação E caso tenha duvida sobre configuração do componete leia este em en AuthComponent Então cara, esse material em PT usa o padrão que é a tabela users com os campos username e password, e eu preciso que o login no meu sistema funcione com a tabela usuarios e com os campos email e senha. Eu sempre consegui faze isso com o cakephp 1.3 e quero fazer com o cakephp 2.x. Do material em ingles eu tentei mas ainda não consegui faze funciona, to tentando aqui! Preciso de ajuda pra faze esse negocio funciona pois é pra um sistema do meu tcc, se eu não consegui faze funciona o login com o cake 2 vou ter que usar o 1.3. Valeu! Compartilhar este post Link para o post Compartilhar em outros sites
Eduiagami 1 Denunciar post Postado Maio 1, 2012 Tente isso amigo: public $components = array( 'Session', 'Auth' => array( 'loginAction' => array( 'controller' => 'usuarios', 'action' => 'login', ), 'authError' => 'É necessário logar para acessar está area', 'authenticate' => array( 'Form' => array( 'userModel'=>'Usuario' ) ) ) ); Compartilhar este post Link para o post Compartilhar em outros sites
chamuska 5 Denunciar post Postado Maio 1, 2012 Tente isso amigo: public $components = array( 'Session', 'Auth' => array( 'loginAction' => array( 'controller' => 'usuarios', 'action' => 'login', ), 'authError' => 'É necessário logar para acessar está area', 'authenticate' => array( 'Form' => array( 'userModel'=>'Usuario' ) ) ) ); Deu certo pra carrega a pagina de login! Mas quando executo o form da pagina ele recarrega a pagina e parece que não executa nenhuma query, pois aquela tabela na parte de baixo da pagina que mostra as consultas não mostra nenhuma consulta, provavelmente não executa nada no bd pra autenticar o usuario. Então as minhas duvidas são: - Como fazer para autenticar o usuario no banco e exibir a consulta ? - Como posso fazer para que ele criptografe a senha em MD5 ? Como o codigo que você me passo deu certo, eu alterei o AppController pra fica assim: <?php /** * Application level Controller * * This file is application-wide controller file. You can put all * application-wide controller-related methods here. * * PHP 5 * * CakePHP(tm) : Rapid Development Framework (http://cakephp.org) * Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org) * * Licensed under The MIT License * Redistributions of files must retain the above copyright notice. * * @copyright Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org) * @link http://cakephp.org CakePHP(tm) Project * @package app.Controller * @since CakePHP(tm) v 0.2.9 * @license MIT License (http://www.opensource.org/licenses/mit-license.php) */ App::uses('Controller', 'Controller'); /** * Application Controller * * Add your application-wide methods in the class below, your controllers * will inherit them. * * @package app.Controller * @link http://book.cakephp.org/2.0/en/controllers.html#the-app-controller */ class AppController extends Controller { public $components = array('Session', 'Security', 'Auth'); public function beforeFilter(){ $this->Auth->loginAction = array('controller' => 'usuarios', 'action' => 'login'); $this->Auth->authError = 'É necessário logar para acessar está area'; $this->Auth->authenticate = array('Form' => array('userModel'=>'Usuario')); $this->Auth->fields = array('password' => 'senha', 'username' => 'email'); $this->Auth->loginRedirect = array('controller' => 'usuario', 'action' => 'index'); $this->Auth->allow('index','view'); } } A pagina de login fico assim: <h2>EFETUE LOGIN!</h2> <?php echo $this->Session->flash('auth'); // Exibimos qualquer erro que possa ter ocorrido echo $this->Form->create('Usuario' , array('action' => 'login')); echo $this->Form->input('email'); echo $this->Form->input('senha', array('type'=>'password')); echo $this->Form->end('LOGAR'); ?> E na UsuariosController, na função login() fico assim: public function login(){ if($this->request->is('POST')) { if($this->Auth->login()) { $this->redirect($this->Auth->redirect()); } else { $this->Session->setFlash('Usuario ou senha está incorreta.'); } } } O codigo dessa função login eu peguei num video do youtube! Como posso resolver esses problemas de validação de usuario ?? Precisam de mais algum codigo ?! Valeu! Compartilhar este post Link para o post Compartilhar em outros sites
Eduiagami 1 Denunciar post Postado Maio 1, 2012 Amigo, para exibir as queries realizadas no banco é necessário que você adicione um "element" ao seu layout. #No layout insira isto. echo $this->element('sql_dump'); #Para criptografar sua semha utilize o callback beforeSave public function beforeSave($options = array()) { $this->data['User']['password'] = AuthComponent::password($this->data['User']['password']); return true; } #Altere $this->Auth->authenticate = array('Form' => array('userModel'=>'Usuario')); $this->Auth->fields = array('password' => 'senha', 'username' => 'email'); #Por isto $this->Auth->authenticate = array('Form'=>array('userModel'=>'Usuario','fields'=>array('username'=>'email','password'=>'senha'))); e tente novamente. abraços Compartilhar este post Link para o post Compartilhar em outros sites
chamuska 5 Denunciar post Postado Maio 1, 2012 Amigo, para exibir as queries realizadas no banco é necessário que você adicione um "element" ao seu layout. #No layout insira isto. echo $this->element('sql_dump'); #Para criptografar sua semha utilize o callback beforeSave public function beforeSave($options = array()) { $this->data['User']['password'] = AuthComponent::password($this->data['User']['password']); return true; } #Altere $this->Auth->authenticate = array('Form' => array('userModel'=>'Usuario')); $this->Auth->fields = array('password' => 'senha', 'username' => 'email'); #Por isto $this->Auth->authenticate = array('Form'=>array('userModel'=>'Usuario','fields'=>array('username'=>'email','password'=>'senha'))); e tente novamente. abraços Fiz a alteração no $this->Auth->authenticate e apareceu na tela o echo da consulta!! Mas a alteração no beforeSave não deu certo, ele não esta sendo executado na Model Usuario :( O que pode ser ?? To meio perdido no cake 2.x. Valeu1 Compartilhar este post Link para o post Compartilhar em outros sites
Eduiagami 1 Denunciar post Postado Maio 1, 2012 Você está alterando os dados a sua necessidade? #Essa função é chamada antes do model persistir os dados no banco. public function beforeSave($options = array()) { $this->data['Usuario']['senha'] = AuthComponent::password($this->data['Usuario']['senha']); return true; } abraços Compartilhar este post Link para o post Compartilhar em outros sites
chamuska 5 Denunciar post Postado Maio 2, 2012 Você está alterando os dados a sua necessidade? #Essa função é chamada antes do model persistir os dados no banco. public function beforeSave($options = array()) { $this->data['Usuario']['senha'] = AuthComponent::password($this->data['Usuario']['senha']); return true; } abraços Preciso alterar o valor da senha para criptografar em MD5, por isso preciso dessa função. Estou estranhando isso não funcionar, pois pelo que pesquisei ele deve funcionar só de colocar na Model. Não sei se é isso que você tinha perguntado, mas é pra isso que preciso da função! Valeu! Você está alterando os dados a sua necessidade? #Essa função é chamada antes do model persistir os dados no banco. public function beforeSave($options = array()) { $this->data['Usuario']['senha'] = AuthComponent::password($this->data['Usuario']['senha']); return true; } abraços Preciso alterar o valor da senha para criptografar em MD5, por isso preciso dessa função. Estou estranhando isso não funcionar, pois pelo que pesquisei ele deve funcionar só de colocar na Model. Não sei se é isso que você tinha perguntado, mas é pra isso que preciso da função! Valeu! Compartilhar este post Link para o post Compartilhar em outros sites
chamuska 5 Denunciar post Postado Maio 3, 2012 Dei uma olhada nos meus codigos feitos usando cake 1.3 e vi que na Model Usuario eu usei a função hashPasswords. function hashPasswords($data) { if (isset($data['Usuario']['senha'])) { $data['Usuario']['senha'] = md5($data['Usuario']['senha']); return $data; } return $data; } Procurei pra faze ela no cake 2 mas não achei ainda um exemplo. Alguem ai sabe como posso fazer no cake 2 ??? Valeu! Compartilhar este post Link para o post Compartilhar em outros sites
m@dDog 5 Denunciar post Postado Maio 3, 2012 No CakePHP 2 funciona um pouco diferente. http://book.cakephp.org/2.0/en/core-libraries/components/access-control-lists.html#assigning-permissions Compartilhar este post Link para o post Compartilhar em outros sites
chamuska 5 Denunciar post Postado Maio 3, 2012 No CakePHP 2 funciona um pouco diferente. http://book.cakephp.org/2.0/en/core-libraries/components/access-control-lists.html#assigning-permissions Você está falando da parte de validação de usuários ou de criptografia de senha ?! Valida acesso de usuário eu não curti muito usando ACL e to usando só o Auth por enquanto, mas pretendo estudar e testar melhor o ACL. Compartilhar este post Link para o post Compartilhar em outros sites
BornSlip 0 Denunciar post Postado Junho 24, 2012 Prezados, Tento a dias utilizar o novo componente Auth do cakephp 2.x porém sem sucesso, ao tentar personalizar os campos no model Cliente para utilizar o cpf como login, a consulta não é executada no bd, o sql_dump não mostra nada, no entanto ao usar os campos padrões a consulta é efetuada com sucesso. Segue abaixo trecho do código Cakephp 2.1.3 AppController <?php App::uses('Controller', 'Controller'); class AppController extends Controller { public $helpers = array('Html','Time','Form','Session'); public $paginate = array('limit' => 5); public $components = array('Session','Security','Auth'); function beforeFilter() { } } ?> ClientesController / beforeFilter public function beforeFilter() { parent::beforeFilter(); $this->Auth->authenticate = array( 'Form' => array( 'userModel' => 'Cliente', 'fields' => array('username' => 'cpf'), // quando o campo username ou password é modificado a consulta não é executada 'scope' => array('Cliente.ativo' => true) ) ); $this->Auth->loginAction = array('controller' => 'clientes', 'action' => 'login'); $this->Auth->loginRedirect = array('controller' => 'clientes', 'action' => 'balance'); // $this->Auth->allow('*'); } Compartilhar este post Link para o post Compartilhar em outros sites
m@dDog 5 Denunciar post Postado Junho 26, 2012 Provavelmente você não está enviando o campo cpf no post. Talvez você tenha esquecido de mudar na view. <?php echo $this->Form->inputs(array( 'legend' => __('Login'), 'cpf', 'password' => array('value' => false) )); ?> Compartilhar este post Link para o post Compartilhar em outros sites