2011-12-11 86 views
3

的Web應用程序工作,除了AUTH手動調用很大。我一直在爲此掙扎好幾天。在我的示例代碼中,我暫時改寫cookie來縮小的原因。這裏是我的應用程序控制器剪斷:

App::import('Sanitize'); 
//uses('sanitize'); 
class AppController extends Controller { 
    var $components = array('Clean','Acl', 'Auth', 'Session', 'RequestHandler', 'Cookie', /* 'DebugKit.Toolbar' */); 
    var $helpers = array('uiNav','Flash','Html', 'Form', 'Session','Javascript','Ajax','Js' => array('Jquery'), 'Time','Js'); 

    function beforeFilter() { 
     //Configure AuthComponent 
     $this->Auth->authorize = 'actions'; 
     $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login'); 
     $this->Auth->logoutRedirect = array('controller' => 'users', 'action' => 'login'); 
     $this->Auth->loginRedirect = array('controller' => 'users', 'action' => 'view'); 
     $this->Auth->actionPath = 'controllers/'; 
     $this->Auth->autoRedirect = false; 

     $this->Auth->allowedActions = array('display'); 

     if(!$this->Auth->user()){ 
      //$cookie = $this->Cookie->read('Auth.User'); 
      $cookie = array('username' => 'chris22', 'password' => 'stuff'); 
      if (!is_null($cookie)) { 
       $this->set('checking_cookie',$cookie); 
       if ($this->Auth->login($cookie)) { 
        $this->set('cookie_message','cookie validates!'); 
        // Clear auth message, just in case we use it. 
        $this->Session->delete('Message.auth'); 
    /*    $this->redirect($this->Auth->redirect()); */ 
       } 
      } 
     } 
    } 
} 

正如你看到的,我只是堵塞的用戶名和密碼$這個 - > Auth->登錄名和它不工作!

我不知道如果我的用戶控制器培訓相關,但這裏是登錄功能太:

function login() { 
    if ($this->Auth->user()) { 
     if (!empty($this->data) && $this->data['User']['remember_me'] && isset($this->data['User']['password'])) { 
      $cookie = array(); 
      $cookie['username'] = $this->data['User']['username']; 
      $cookie['password'] = $this->data['User']['password']; 
      $this->Cookie->write('Auth.User', $cookie, true, '+1 month'); 
      //unset($this->data['User']['remember_me']); 
      $this->set('cookie-00', 'setting cookie.'); 

     }else{ $this->set('cookie_message', 'not setting cookie.');} 

     $this->redirect($this->Auth->redirect()); 
    } 

}  

謝謝!

回答

6

編輯 - 1 - 我想我知道爲什麼這不適合你。

原因1:$這 - > Auth->登錄時在

array(
    'User'=>array(
     'username'=>'myusername', 
     'password'=>'mypassword' 
    ) 
) 

原因2形式的數據:$這 - > Auth->登錄不會散列的口令。

您必須完全按照它在數據庫中的顯示發送密碼。

EVERYTHING低於這條線是可能的,但不太可能在本案例:

確實,當你最初創建的用戶名和密碼,哈希值分別設置?

  1. 要檢查您的哈希匹配看看你的用戶表與phpMyAdmin或MySQL Workbench和找到密碼字段用戶chris22
  2. 與此相比,進入到當前的散列。要查看當前哈希,把下面的某個地方的代碼在一個控制器功能(指數)和導航那裏。

    ​​

我希望這有助於!

+0

編輯1幫了我。謝謝。 –

1

確保字段在驗證組件正確分配。 如果使用非用戶名密碼&不同的字段名進行連接,您必須在您的控制器像這樣聲明它們:

'Auth' => array(
    'authenticate' => array(
    'Form' => array(
     'fields' => array('username' => 'email', 'password' => 'mot_de_passe') 
    ) 
) 
)