登录前检查字段

时间:2015-04-18 10:36:58

标签: cakephp cakephp-2.3

我在网站上完成了一个用户系统。 在我的UsersController.php中,我有这个方法:

    public function login()
{
    if($this->request->is('post')) {
        if($this->Auth->login()) {
            $this->Session->setFlash('Connexion établie', 'flash_success');
            $this->redirect($this->Auth->redirectUrl());
        } else {
            $this->Session->setFlash("Nom d'user ou mot de passe invalide, réessayer", 'flash_error');
            $this->redirect(array('controller' => 'indexes', 'action' => 'index'));
        }
    }
}

效果很好,但我需要改变它。在我的数据库中,我有一个字段"验证"这是一个布尔值。 在登录时我想记录用户,如果该字段为真,但如果该字段为假,我不想记录他。

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您需要范围字段。您可以在beforeFilter方法上添加它,例如:

public function beforeFilter() {
    $this->Auth->authenticate = array(
        'YourAuthComponent' => array(
            'fields' => array(
                'username' => 'username',
                'password' => 'password'
            ),
            'userModel' => 'Users.User',

            //This is what you need
            'scope' => array(
                'User.active' => 1,
                'User.verified' => 1)
        )
    );
}

或者您可以在AppController或UsersController上将选项添加到组件数组中。

class AppController extends Controller {

/**
* Components used from the application
*
* @var array
*/
public $components = array(

    'Auth'=> array(
        'authenticate' => array(
            'Form' => array(
                'fields' => array('username' => 'email'),
                'scope' => array(
                    'User.active' => 1,
                    'User.verified' => 1)
                    )
                 )
             )
         ),
    );
}