プロジェクト

全般

プロフィール

Backport(バックポート) #2453

自動ログイン時に自動ログイン用のCookieが削除される

Yuya Watanabe12年以上前に追加. 12年以上前に更新.

ステータス:
Fixed(完了)
優先度:
Normal(通常)
担当者:
対象バージョン:
開始日:
2011-10-03
期日:
進捗率:

100%


説明

概要

ログイン時に自動ログインにチェックを入れているにも関わらず,次回自動ログインは成功するが,その次の自動ログインに失敗する.
失敗する原因として自動ログイン用のCookieが削除されていることが確認されている.
この問題は #2139 によって修正されたはずであるが, #2315 の修正によって再度発生するようになった.

再現手順

  1. SNSに自動ログインを有効にしてログイン
  2. ブラウザ終了
  3. 同ブラウザでSNSにアクセス
  4. 同ブラウザ終了
  5. 同ブラウザでSNSにアクセス
    • ログアウト状態となっている

問題までの処理の流れ

  1. メンバが「次回から自動的にログイン」にチェックをいれてログインする
    • 自動ログイン用のCookieと今回限りのログイン用のCookieがサーバから送られてきてブラウザに保存される
  2. ブラウザを終了する
    • 今回限りのログイン用Cooikeが削除されるが自動ログイン用Cookieは残ったままとなる
  3. ブラウザを立ち上げてSNSにアクセスする
    • 最初は未ログイン状態となりopAnonymousMemberのインスタンスが生成される
    • opAnonymousMember生成時にログアウト処理が行われて自動ログイン用Cookieを削除する処理が行われる
    • ブラウザから送られて来た自動ログイン用Cookieを用いてopRememberLoginFilterがログインに成功する
    • ログインを完了してSNSを表示したときには今回限りのログイン用Cookieが存在するが自動ログイン用Cookieが削除されている状態となる
  4. ブラウザを終了する
    • 今回限りのログイン用Cookieが削除されてなにもない状態となる
  5. ブラウザを立ち上げてSNSをにアクセスする
    • opAmonymouseMemberとしてログイン画面にリダイレクトされる

原因

#2315 で修正されたコミット( 7fc9dfcc ) で下記部分においてopAnonymousMemberのインスタンス生成時にログアウト処理が行われるように修正されたため.

lib/user/opSecurityUser.class.php 330行目

321  /**
322   * Initializes all credentials associated and status with this user.
323   */
324   public function initializeUserStatus()
325   {
326     opActivateBehavior::disable();
327     $member = $this->getMember();
328     opActivateBehavior::enable();
329 
330     if ($member instanceof opAnonymousMember || $member->getIsLoginRejected())
331     {
332       $this->logout();
333       $isSNSMember = false;
334     }
335     else
336     {
337       $isSNSMember = (bool)$member->getIsActive();
338     }
339 
340     $this->setIsSNSMember($isSNSMember);
341     if ($isSNSMember)
342     {
343       $member->updateLastLoginTime();
344     }
345   }

修正方針

参考

調査を行ったログ: http://redmine.openpne.jp/issues/1985#note-13


関連するチケット

関連している OpenPNE 3 - Bug(バグ) #1985: Cookie for automatic login is deleted when automatic login is done (自動ログイン時に自動ログイン用のCookieが削除される) Fixed(完了) 2011-03-29
関連している OpenPNE 3 - Backport(バックポート) #2139: [PATCH] Cookie for automatic login is deleted when automatic login is done (自動ログイン時に自動ログイン用のCookieが削除される) Fixed(完了) 2011-03-29 2011-06-24
関連している OpenPNE 3 - Backport(バックポート) #2315: 携帯でSNS強制退会直後にアクセスするとCredentials Required画面が表示される Fixed(完了) 2011-07-29

関係しているリビジョン

リビジョン 4e715d63 (差分)
Yuya Watanabe12年以上前に追加

(fixes #2453, BP from #1985) fixed automatic log-in not to eliminate cookie in correct pattern

履歴

#1 Yuya Watanabe12年以上前に更新

  • 対象バージョンOpenPNE 3.6.0 にセット

#2 Yuya Watanabe12年以上前に更新

  • 説明 を更新 (diff)

#3 Yuya Watanabe12年以上前に更新

  • 担当者Yuya Watanabe にセット

#4 wa ta12年以上前に更新

  • ステータスNew(新規) から Pending Review(レビュー待ち) に変更
  • 進捗率0 から 50 に変更

更新履歴 4e715d63162e02bc1e320c14c015200813e93b93 で適用されました。

#5 Kousuke Ebihara12年以上前に更新

  • ステータスPending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
  • 進捗率50 から 70 に変更

#6 Yuma Sakata12年以上前に更新

  • ステータスPending Testing(テスト待ち) から Rejected(差し戻し) に変更
  • 進捗率70 から 50 に変更

テスト実施しましたが、修正が必要な点がありましたので確認お願いします。

firefox3で自動ログインOFFの場合の正常動作確認

  • 試験手順
    1. firefox3にてSNSに自動ログインを無効にしてログイン
    2. firefox3終了
    3. firefox3を起動
    4. SNSにアクセス
  • 試験結果
    ログイン画面ではなく、メンバーのホーム画面に遷移する
  • 修正方針
    ログイン画面に遷移するように修正お願いします。

#7 Kousuke Ebihara12年以上前に更新

  • ステータスRejected(差し戻し) から Pending Testing(テスト待ち) に変更
  • 進捗率50 から 70 に変更

Yuma Sakata は書きました:

テスト実施しましたが、修正が必要な点がありましたので確認お願いします。

firefox3で自動ログインOFFの場合の正常動作確認

  • 試験手順
    1. firefox3にてSNSに自動ログインを無効にしてログイン
    2. firefox3終了
    3. firefox3を起動
    4. SNSにアクセス
  • 試験結果
    ログイン画面ではなく、メンバーのホーム画面に遷移する
  • 修正方針
    ログイン画面に遷移するように修正お願いします。

この指摘についてですが、 Firefox 起動時に前回終了時のタブをリストアする設定にしていた場合に、Firefox 側でセッションクッキーを削除しないことが原因であることがわかりました。ブラウザ設定上の問題(問題というより、 Firefox がこのような機能を提供しているだけ)であり、 Web アプリケーションで対応可能なものではありません。

#8 Yuma Sakata12年以上前に更新

  • ステータスPending Testing(テスト待ち) から Fixed(完了) に変更
  • 進捗率70 から 100 に変更

テストOKです。

他の形式にエクスポート: Atom PDF