2009-11-18 2 views
0

현재 내 로그인 폼은 다음과 같이Symfony에서 로그인을 구현하기 위해 어떤 검사기가 사용되어야합니까?

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

성공 로그인 존과 67890을 사용하는 사용자입니다. 제 질문은 문제를 해결하기 위해 어떤 검사기를 사용해야합니까?

+0

답장을 보내 주셔서 감사합니다. 두 가지 방법 모두 효과적 일 수 있습니다. 어느 것이 더 나은지 알기는 어렵습니다. sfGuard에서 사용하는 방법을 선택해도 될까요? – bobo

답변

2

이 작업을 수행하는 좋은 방법은 없습니다. sfGuard에서 양식 입력 데이터의 유효성을 검사 및 서식 데이터를 사용하여, 사용자에 로그인 한 후, 여기에 샘플

경우 ($ this-> 형상 -> isValid()) {
$ 값 = $ this-> 형상 - > getValues ​​();
$ this-> getUser() -> signin ($ values ​​[ 'user']); }

나는 어쩌면 1sfValidatorAnd 그런 일을 할 모르겠지만, 웹 응용 프로그램에 로그인 였는지를 매우 importand 것은 그래서, 당신은 당신의 코드이 였는지를 함께 처리해야합니다.

http://www.symfony-project.org/forms/1_2/en/B-Validators#chapter_b_sub_sfvalidatorand

1

두 가지 양식 필드의 유효성을 한 번에 확인하려고하므로 자체 유효성 검사기를 사용해야합니다. 또는 sfGuardPlugin을 사용하고이 질문을 잊어 버릴 수도 있습니다.

관련 문제