簡體   English   中英

cakePHP 2.4中的身份驗證

[英]Authentication in cakePHP 2.4

我無法在cakePHP 2.4中登錄用戶,遵循我創建的文檔。 它表示已成功登錄並重定向到目標URL(用戶/已登錄操作),但$this->Auth->username$this->Auth->password保持空白,不會創建任何會話。 嘗試使用錯誤的憑據登錄時,它也會被重定向。 並告訴我登錄成功。 我現在很傻。

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>

登錄的用戶詳細信息應如下所示:

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

Auth對象中沒有字段用戶名。

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

如果要獲取密碼,則需要從數據庫中查詢用戶。 但是你應該單獨留下密碼。

編輯:由於您可以訪問“已登錄”頁面,這意味着已創建用戶會話。 您只需要更改訪問用戶數據的方式。

Edit2:通過在Auth中添加以下行來指定身份驗證處理程序:

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

Edit3:再次檢查存儲密碼的數據庫字段是VARCHAR,長度為40。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM