簡體   English   中英

CakePHP更改身份驗證字段不起作用

[英]CakePHP Changing Auth Fields isn't working

我目前正在嘗試將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'); 
  • 將userscontroller中的字段數組從用戶名更改為電子郵件

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

然后,我嘗試使用相同的測試詳細信息登錄,並告訴我它們不正確。

有誰知道為什么這行不通?

在Cake 2.x中有一點不同

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

暫無
暫無

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

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