3

この問題は、Chrome と Firefox でのみ発生します。Opera と Safari は正常に動作します。ログイン時に、rememberMe オプションをチェックしません。

allowAutoLoginを TRUE に設定

LoginForm モデルからのログイン方法は次のとおりです。

public function login()
{
    if ($this->_identity === NULL)
    {
        $this->_identity = new UserIdentity($this->login, $this->password);
        $this->_identity->authenticate();
    }
    if ($this->_identity->errorCode === UserIdentity::ERROR_NONE)
    {
        $duration = $this->rememberMe ? 3600 * 24 * 30 : 0; // 30 days
        Yii::app()->user->login($this->_identity, $duration);
        return TRUE;
    }
    else
        return FALSE;
}

そして、ここに私の行動があります:

public function actionLogin()
{
    $model = new LoginForm;

    // if it is ajax validation request
    if (isset($_POST['ajax']) && $_POST['ajax'] === 'login-form')
    {
        echo CActiveForm::validate($model);
        Yii::app()->end();
    }

    // collect user input data
    if (isset($_POST['LoginForm']))
    {
        $model->attributes = $_POST['LoginForm'];
        // validate user input and redirect to the previous page if valid
        if ($model->validate() && $model->login()) $this->redirect(Yii::app()->user->returnUrl);
    }
    // display the login form
    $this->render('login', array('model' => $model));
}
4

1 に答える 1

1

構成( protected/config/main.php ) で、allowAutoLoginfalseに変更できます。

'components' => array(
    'user' => array(
        // enable cookie-based authentication
        'allowAutoLogin' => false,
    ),

Yii のログイン状態について詳しくは、http: //www.yiiframework.com/doc/api/1.1/CWebUser をご覧ください。

于 2012-11-07T14:42:13.180 に答える