1

私は KO3 と認証モジュールをいじっています。ログインは非常にうまく機能していますが、ページを更新するたびにユーザーのログイン数が増加していることに気付きました。

私はそれがこのセクションから来ていると確信しています。

// Check if logged in
if ($this->auth->logged_in())
{
    // Pass user to view
    $this->view->user = $this->auth->get_user(); // Here?
}
else
{
    // Attempt auto login
    $this->auth->auto_login();

    // Check if logged in
    if ($this->auth->logged_in())
    {
        // Pass user to view
        $this->view->user = $this->auth->get_user();
    }
}

これで、users オブジェクトをビューに渡す行であることがわかりました。でコメントした行// Here?

なぜこれがログインを増やすのか疑問に思いました。ソースをチェックアウトしましたが、セッション変数を読み取るだけです。

編集

説明を受けた後、これを修正したと思いました。どうやらそうではありません。それがセッションにかかっているかどうかはよくわかりません.GitHubリポジトリのCookieとセッションクラスを使用してみましたが、違いはありませんでした.

これのデバッグをどこから始めればよいかわかりません。

4

1 に答える 1

2

Auth_ORM::logged_in() への単一の呼び出しが次の原因となるため、else ブロック全体があいまいであるという事実を監視しています。

Auth_ORM::logged_in() 
-> Auth_ORM::get_user() 
-> Auth_ORM::auto_login()
-> Auth_ORM::complete_login()
-> Model_Auth_User::complete_login()

したがって、コードは実際には次のように同じことを行います。

// Check if logged in
if ($this->auth->logged_in())
{
    // Pass user to view
    $this->view->user = $this->auth->get_user();
}

そしてModel_Auth_User::complete_login()、ログイン数が増加する場所です。

あなたの問題はAuth_ORM::auto_login()、ユーザーオブジェクトをセッションに保存する代わりに、新しいトークンを設定して (PEBKAC が原因で、またはセッションが正常ではないため) 常に呼び出されることです。

于 2011-05-15T10:49:38.697 に答える