2013-08-07 53 views
1

我創建了由蛋糕提供的哈希用戶。但是當我去登錄,說「無效的用戶名或密碼」。但沒關係。

$this->Auth->login();總是返回false ...

Crontroller

class MastersController extends AppController{ 

public function login(){ 
    if ($this->request->is('post')) { 
     debug($this->Auth->login()); 
     if ($this->Auth->login()) { 
      $this->redirect($this->Auth->redirect()); 
     } 
     else { 
      $this->Session->setFlash(__('Invalid username or password, try again')); 
     } 
    } 
} 
public function logout(){ 
    $this->redirect($this->Auth->logout()); 
}} 

AppController的

class AppController extends Controller { 

    public $components = array('Session', 'Cookie', 'Auth'); 
    function beforeFilter() { 
     $this->loadModel('Master'); 

     $this->Auth->userModel = 'Master'; 
     $this->Auth->allow('*'); 
     // Action da tela de login 
     $this->Auth->loginAction = array(
       'masters' => false, 
       'controller' => 'masters', 
       'action' => 'login' 
     ); 

     // Action da tela após o login (com sucesso) 
     $this->Auth->loginRedirect = array(
       'masters' => true, 
       'controller' => 'masters', 
       'action' => 'index' 
     ); 

     // Action para redirecionamento após o logout 
     $this->Auth->logoutRedirect = array(
       'masters' => false, 
       'controller' => 'pages', 
       'action' => 'login' 
     ); 
     $this->Auth->authorize = array('controller'); 
     if (!isset($this->params['masters']) || !$this->params['masters']) 
      $this->Auth->allow('*','login'); 

     $this->Auth->loginError = __('Usuário e/ou senha incorreto(s)', true); 
     $this->Auth->authError = __('Você precisa fazer login para acessar esta página', true); 
    } 

    public function isAuthorized($masters){ 
     return TRUE; 
    }} 

VIEW login.ctp

echo 'Formulário de login'; 
echo $this->Session->flash('auth'); 
echo $this->Session->flash(); 
echo $this->Form->create('Master', array('controller'=>'masters','action'=>'login')); 
echo $this->Form->input('username'); 
echo $this->Form->input('password'); 
echo $this->Form->end('Entrar'); 

型號

class Master extends AppModel{ 
public $name = 'Master'; 
public $validate = array(
    'username' => array(
     'required' => array(
      'rule' => array('notEmpty'), 
      'message' => 'Usuario requerido.' 
     ) 
    ), 
    'password' => array(
     'required' => array(
      'rule' => array('notEmpty'), 
      'message' => 'Senha requerida.' 
     ) 
    ) 
); 

public function beforeSave($options = array()) { 
    if (isset($this->data[$this->alias]['password'])) { 
     $this->data[$this->alias]['password'] = AuthComponent::password($this->data[$this->alias]['password']); 
    } 
    return true; 
} 

我不知道爲什麼它給這個錯誤。這一切似乎OK! 我改變Security.salt的一封信,他問.. 幫助我:) 我需要它的工作

+2

密碼可能不匹配或您的會話沒有配置屬性。是'調試的結果(AuthComponent ::密碼($這個 - >數據[$這個 - >別名] [「密碼」]))'一樣在你的數據庫中的密碼值? – noslone

回答

1
debug($this->Auth->login()); 
if ($this->Auth->login()) {} 

是一個壞主意。 首先會在您登錄, 第二個電話然後將 - 當然 - 返回false(因爲你已經登錄)。

如果你真的需要測試這種方式,停止代碼:

debug($this->Auth->login()); die(); 
0

我有同樣的問題,什麼固定它,我正在改變這個 - $>別名用戶,所以beforeSave(現)看起來像

public function beforeSave($options = array()) { 
    if (isset($this->data['User']['password'])) { 
     $this->data['User']['password'] = AuthComponent::password($this->data['User']['password']); 
    } 
    return true; 
} 
相關問題