2012-11-24 6 views
-1

yii에서는 로그인 기능을 만들고 있습니다. 사용자가 올바른 사용자 이름을 입력했지만 잘못된 암호를 입력하면이 올바른 사용자 이름에 대해 데이터베이스에 serach를 만들고 해당 사용자 이름의 ID를 loginattemmpt 테이블에 넣고 잘못된 암호 메시지를 표시하려고합니다. 그래서 누군가 나를 기쁘게 할 수 있습니다.비밀번호가 틀린 경우 yii 로그인 기능에서

답변

2

in userIdentity.php 테이블에 데이터 저장.

public function authenticate() { 

    $user = User::model()->findByAttributes(array('username' => $this->username)); 

    if ($user === null) { 
     $this->errorCode = self::ERROR_USERNAME_INVALID; 
    } 

    elseif($user->password !== crypt($this->password, $salt)) 
    { // save $user->id in attempt table here . 
      $this->errorCode = self::ERROR_PASSWORD_INVALID; 

    }else{ 
    //set id 
    } 

그리고 인증 기능이 setError 인 파일에서.

$this->_identity = new UserIdentity($this->username, $this->password); 
     if (!$this->_identity->authenticate()) 
      if ($this->_identity->errorCode === UserIdentity::ERROR_USERNAME_INVALID) { 
       $this->addError('password', 'Incorrect email Id'); 
      }elseif($this->_identity->errorCode === UserIdentity::ERROR_PASSWORD_INVALID){ 
       $this->addError('password', 'Incorrect Password'); 
      } 
+0

내가 확실한 방법을 변경 나도 그래 구현 한 AS-경우 ($ 사용자 -> 암호! == $ 사용자 -> 암호화 ($ this-> 비밀번호)) {this->의 errorCode = 자기 :: ERROR_PASSWORD_INVALID; $ command = Yii :: app() -> db-> createCommand(); $ command-> insert ('시도', 배열 ( \t \t 'id'=> Yii :: app() -> User-> getId(), )); }하지만 암호가 잘못되면 "Yii :: app() -> User-> getId()"에 아무 ID도 포함되지 않습니다. ID 필드는 사용자 이름과 비밀번호가 모두 맞을 때만 설정되기 때문에 id가 테이블에 삽입되도록하는 방법. id가 설정되지 않았기 때문에 –

+1

데이터베이스의 사용자 이름을 사용하여 검색을 수행하려면 사용자 이름에 행 일치를 가져와 attemp에 id를 저장해야합니다. $ user = User :: model() -> findByAttributes (array ('username'=> $ this-> username)); 여기 $ user-> id는 userid입니다. $ this -> _ id = // id 여기에 설정 한 것과 같은 변수를 저장하십시오; – Hemc

+0

고맙습니다. 선생님 ... 그 일은 .... 이제 동일한 로그인 기능을 수행해야합니다. 내 클라이언트 쪽은 extj이고 서버 쪽은 yii 프레임 워크입니다. extjs에서 설계 될 로그인 페이지는 사용자 이름과 암호를 Json 형식으로 보냅니다. 로그인 방법을 변경하여 extson에서 Json 형식으로 보낸 사용자 이름과 암호를 얻는 방법은 다음과 같습니다. –

관련 문제