Какой валидатор следует использовать для реализации входа в Symfony? - PullRequest
0 голосов
/ 18 ноября 2009

В настоящее время моя форма входа выглядит так:

class LoginForm extends BaseFormPropel
{
  public function setup()
  {
    $this->setWidgets(array(
      'login_id' => new sfWidgetFormInput(), 
      'pwd' => new sfWidgetFormInputPassword() 
    ));

    $this->widgetSchema->setLabels(array(
        'login_id'=>'Login Id',
        'pwd'=>'Password'
    ));

    $this->widgetSchema->setNameFormat('member[%s]');

    $this->setValidators(array(
      'login_id' => new sfValidatorPropelChoice(array('model' => 'Member', 'column' => 'login_id', 'required' => true)), 
      'pwd' => new sfValidatorPropelChoice(array('model' => 'Member', 'column' => 'pwd', 'required' => true))
    ));

    $this->errorSchema = new sfValidatorErrorSchema($this->validatorSchema);

    parent::setup();
  }


  public function getModelName()
  {
    return 'Member';
  }

}

Но это неправильная реализация, потому что sfValidatorPropelChoice гарантирует, что пользователь только вводит значение, которое существует в столбце. Это означает, что если база данных содержит следующие строки,

login_id | PWD
Джон, 12345
Питер, 67890

Пользователь, использующий john и 67890 для входа в систему, добьется успеха. У меня вопрос: какой валидатор мне следует использовать для устранения проблемы?

Ответы [ 2 ]

2 голосов
/ 19 ноября 2009

Нет хорошего способа сделать эту работу. В форме sfGuard проверяет входящие данные и после использования данных формы для входа в систему пользователя, вот пример

if ($ this-> form-> isValid ()) {
$ values ​​= $ this-> form-> getValues ​​();
$ This-> GetUser () -> ($ зарегистрировались значения [ 'пользователь']); }

Я не знаю, может быть 1 sfValidatorAnd сделать что-то подобное, но процесс входа в систему очень важная вещь в веб-приложении, поэтому вы должны обработать свой код этим процессом.

http://www.symfony -project.org / форма / 1_2 / а / B-валидаторы # chapter_b_sub_sfvalidatorand

1 голос
/ 18 ноября 2009

Вы должны использовать свой собственный пост-валидатор, потому что вы пытаетесь проверить 2 поля формы одновременно. Или вы можете использовать sfGuardPlugin и забыть этот вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...