0

ログインに新しいカスタム エラーを追加しようとしています。user_status が「0」の場合、エラーが発生するはずです。次のように進めています。

UserIdentity.php

const ERROR_USERNAME_INACTIVE=68;
    public function authenticate()
    {
        $user = Users::model()->findByAttributes(array('email'=>$this->username));


        if ($user===null)
        {
            $this->errorCode=self::ERROR_USERNAME_INVALID;
        }
        else if ($user->password !== md5($this->password))
        {
            $this->errorCode=self::ERROR_PASSWORD_INVALID;
        }
        else if($user->user_status !='1')
        {
            $this->errorCode=self::ERROR_USERNAME_INACTIVE;
        }
        else 
        {
            $this->errorCode=self::ERROR_NONE;
            $this->_id = $user->id;
        }
        return !$this->errorCode;
    }

login.php で

case UserIdentity::ERROR_NONE:
                    Yii::app()->user->login($identity);
                    break;
                case UserIdentity::ERROR_USERNAME_INVALID:
                    $this->addError('username','No Such user is associated with us .');
                    break;
                case UserIdentity::ERROR_USERNAME_INACTIVE:
                    $this->addError('user_status','Sorry, this user is not activated yet');
                default: // UserIdentity::ERROR_PASSWORD_INVALID

                    $this->addError('password','Password is incorrect.');
                    break;

user_Status が !=1 の場合、エラーが正しく発生するだけでなく、パスワードが正しくてもパスワードが正しくないという問題が発生しています

4

2 に答える 2

2

break最後の case ステートメントに a を追加するのを忘れました。休憩なしdefaultで実行されます。

...
    break;
case UserIdentity::ERROR_USERNAME_INACTIVE:
    $this->addError('user_status','Sorry, this user is not activated yet');
    break;
default: // UserIdentity::ERROR_PASSWORD_INVALID
...
于 2013-01-07T12:10:23.300 に答える
0

申し訳ありませんが、私はばかげた間違いを犯していました.switch caseの後、breakステートメントを入れるのを忘れたので、次のデフォルトステートメントも実行されていました.

 case UserIdentity::ERROR_USERNAME_INACTIVE:
             $this->addError('user_status','Sorry, this user is not activated yet');
             **break;**
                default: // UserIdentity::ERROR_PASSWORD_INVALID

                    $this->addError('password','Password is incorrect.');
                    break;
于 2013-01-07T12:09:49.430 に答える