2012-05-28 96 views
1

我目前正在嘗試將使用用戶名字段的cakephp登錄名更改爲使用電子郵件字段。CakePHP更改身份驗證字段不起作用

當使用用戶名字段,登錄正常工作,這是一個有用戶名登錄的代碼:

login.ctp

<?php 
echo $this->Form->create('User'); 
echo $this->Form->input('username'); 
echo $this->Form->input('password'); 
echo $this->Form->end(__('Login')); 
?> 

UsersController.php

public function beforeFilter() { 
    parent::beforeFilter(); 
    $this->Auth->allow('add', 'login'); // Letting users register themselves 
    $this->Auth->fields = array('username' => 'username', 'password' => 'password'); 
} 
public function login() { 
    if ($this->request->is('post')) { 
     if ($this->Auth->login()) { 
      $this->Session->setFlash(__('worked')); 
     } else { 
      debug($this->data); 
      $this->Session->setFlash(__('Invalid username or password, try again')); 
     } 
    } 
} 

AppController的

public $components = array('Session', 'Auth'); 

所以這一切工作正常,我可以登錄測試的細節。

因此,要改變這使用電子郵件,所有我做的是:

  • 變化從用戶名login.ctp輸入電子郵件

    echo $this->Form->input('email'); 
    
  • 變化領域的數組中用戶控制器從用戶名到電子郵件

    $this->Auth->fields = array('username' => 'email', 'password' => 'password'); 
    
  • 更改數據庫從用戶名E場以電子郵件

然後我嘗試使用相同的測試細節登錄,它告訴我,他們是不正確的。

有沒有人有任何想法,爲什麼這不起作用?

回答

6

在蛋糕2.x中這是一個有點不同

$this->Auth->authenticate = array(
    'Form' => array(
     'fields' => array('username' => 'email', 'password' => 'password'), 
    ), 
); 
+0

謝謝你,這已經讓我的神經一會兒! :) – Alex