P3rukao 0 Denunciar post Postado Novembro 24, 2010 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
Herbert Hudson 0 Denunciar post Postado Janeiro 9, 2011 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
P3rukao 0 Denunciar post Postado Janeiro 9, 2011 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
Herbert Hudson 0 Denunciar post Postado Janeiro 9, 2011 tranquilo! Compartilhar este post Link para o post Compartilhar em outros sites