我在网站上完成了一个用户系统。 在我的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'));
}
}
}
效果很好,但我需要改变它。在我的数据库中,我有一个字段"验证"这是一个布尔值。 在登录时我想记录用户,如果该字段为真,但如果该字段为假,我不想记录他。
感谢您的帮助
答案 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)
)
)
)
),
);
}