2014-05-19 171 views
0

我無法在cakePHP 2.4中登錄用戶,請參閱我創建此文檔的文檔。它說已成功登錄,並且也重定向到目標URL(用戶/登錄操作),但$this->Auth->username$this->Auth->password保持空白,沒有會話被創建。嘗試使用錯誤的憑據登錄時,它也會被重定向。並且還告訴我登錄成功了。我現在無能爲力。在cakePHP中進行身份驗證2.4

AppController.php

class AppController extends Controller { 
    public $components = array(
     'Session', 
     'DebugKit.Toolbar', 
     'Auth' => array(
      'loginAction' => array('controller' => 'users', 'action' => 'login', 'plugin' => false), 
      'loginRedirect' => array('controller' => 'users', 'action' => 'loggedin'), 
      'logoutRedirect' => array('controller' => 'users', 'action' => 'loggedout'), 
      'authError' => 'UNABLE TO LOG IN.' 
     ) 
    ); 

    public function beforeFilter(){ 
     $this->Auth->userModel = 'User'; 
     $this->Auth->fields = array('username' => 'username', 'password' => 'password'); 
     $this->Auth->allow('index','display','login','show_reg_form', 'view','signup'); 
    } 

} 

UsersController.php

我只粘貼登錄功能:

public function login() { 


    if ($this->request->is('post')) { 

      if($this->Auth->login(/*$this->request->data*/)){ 
       $this->Session->setFlash(__('Successfully logged in.')); 
       return $this->redirect($this->Auth->redirectUrl()); 
      } else { 
       $this->Session->setFlash(__('Invalid username or password, try again')); 
      } 
     } 

    } 

login.ctp

相關部分是:

<div class="container-login users form"> 
         <?php echo $this->Form->create('User'); 
          echo $this->Form->input('username'); 
          echo $this->Form->input('password'); 
          echo $this->Form->end(__('Login',true));?> 

        </div> 
+0

'__('Login',true)'應該是__('Login')'。這不再是蛋糕1.3了。 – mark

+0

您是否將參數傳遞給$ this-> Auth-> login?或者你在這裏評論他們? –

+0

我沒有通過他們,因爲當我上次取消評論時,我可以登錄任何內容。我讀過文檔,它應該沒有指定的參數。 –

回答

2

在用戶詳細信息的記錄應該這樣寫:

$id   = $this->Auth->user('id'); 
$username = $this->Auth->user('username'); 
... 
$other_field = $this->Auth->user('other_field'); 

的是在驗證對象沒有字段名。

您無法使用用戶方法從Auth讀取密碼字段。

如果您想獲取密碼,您將需要從數據庫中查詢用戶。但是你應該把密碼散開並單獨存放。

編輯: 由於您可以訪問「登錄」頁面,這意味着有一個用戶會話創建。你只需要改變你訪問用戶數據的方式。

EDIT2:再次 檢查數據庫字段存儲的密碼是VARCHAR 40長度: 通過添加下面一行到你的驗證指定的認證處理程序:

'Auth' => array(
    .... 
    'authenticate' => array('Form') 
) 

EDIT3。

+0

以下是這個問題。嘗試使用錯誤的憑據登錄時,它也會被重定向。並且還告訴我登錄成功了。 –

+0

我應該猜到了嗎? –

+0

對不起,更新了這個問題。 –