0

/rpotected/components/UserIdentity.php に次の関数があります。

public function authenticate()
    {
            $username = $this->username;
            $password = $this->password;

            $user = Users::model()->find('username=? AND password=?', array($username, $password));
            if($user === NULL){
                    $this->errorCode=self::ERROR_UNKNOWN_IDENTITY;

            }else{
                    $this->username = $user->username;
                    sess('SESS_USER_INFO', $user->attributes);
                    //print_r(sess('SESS_USER_INFO'));
                    $this->errorCode=self::ERROR_NONE;
            }

            return !$this->errorCode;
    }

以下は /protected/models/Users.php の抜粋です:

public function login()
{            
        if($this->_identity===null)
        {
                $username = $this->username;
                $password = md5($this->password);
                //echo "Username: ".$username."<br />Password:".$password;
                $this->_identity=new UserIdentity($username, $password);
                $this->_identity->authenticate();

        }
        if($this->_identity->errorCode===UserIdentity::ERROR_NONE)
        {
                $duration=$this->rememberMe ? 3600*24*30 : 60*20; // 30 days
                //print_r($this->_identity);
                Yii::app()->user->login($this->_identity,$duration);

                //echo "Login Successful";
                return true;
        }
        else{
                //echo "Error";
                $this->addError('password','Incorrect username or password.');
                return false;
        }

問題: ログイン時に [マイ プロファイル] リンクをクリックすると、再度ログインするよう求められます。したがって、セッションはログイン資格情報を保存/保存しておらず、ログインの有効期間中保持していないようです。

セッション情報が保存され、ログイン資格情報が引き継がれるようにするには、認証機能をどのように変更する必要がありますか?

4

2 に答える 2

1

php.ini の「 session.cookie_lifetime 」の値を確認してください

session.cookie_lifetime = 2592000
于 2014-11-18T06:55:31.803 に答える
-2

$this->setState(loogedInUser,$user); という方法で、CWebUser クラスの変数にログイン資格情報を保存できます。setState 関数を使用します。

この情報はセッションではなく Cookie に保存され、 どこからでもYii::app()->user->loogedInUserを使用してアクセスできます。

于 2012-08-01T05:25:27.740 に答える