Я новичок в CakePhp, я использую CakePhp 2.x. Я, вероятно, собираюсь решить проблему ниже неправильного пути. И я просто знаю, что меня упускают из виду что-то реальное просто, но .....cakephp 2.x включает userExists при проверке логина
Я проверяю данные для входа на основе «от 5 до 15 символов», они перестраивают ошибки, как ожидалось.
[The MODEL]
public $validate = array(
'username' => array(
'between' => array(
'rule' => array('between', 5, 15),
'message' => 'Between 5 to 15 characters'
)
),
'password' => array(
'rule' => array('minLength', '8'),
'message' => 'Minimum 8 characters long'
)
);
[The CONTROLLER]
public function login() {
if ($this->request->data) {
$this->User->set($this->request->data);
if ($this->User->validates() && $this->Auth->login()) {
if ($user = $this->Auth->user()) {
$this->render($this->Auth->redirect());
}else{
//??
}
}else{
$this->User->create();
pr($this->User->invalidFields());
$errors = $this->User->validationErrors;
$data = compact('errors');
$this->set('errors', $data);
$this->set('_serialize', array('errors'));
$this->Session->setFlash('Your username/password combination was incorrect');
}
}
}
Итак, проблема, если поля следовать правилам в модели выше, даже если регистрационные данные (пользователь) не существует, никакие ошибки не будут возвращены (не хорошо). Было бы правильным добавить другую проверку для этого, добавив другое правило, чтобы проверить, действительно ли этот пользователь существует? Если да, то как !?
Или, я работаю с этим в функции входа в контроллер, проверяя, существует ли пользователь? Сейчас я немного смущен. Возможно, я слишком долго смотрел на экран.
Спасибо.
Я думаю, что вы запутываете регистрацию (добавив пользователя) с логином (пользователь уже существует). Последний никогда не имеет никакой проверки. Вся проверка, включая «существует», должна выполняться, когда запись создается, а не когда ее слишком поздно, и вы уже пытаетесь зарегистрировать этого пользователя на основе действительных (и уже сохраненных) данных, которые он предоставляет. – mark