Project

General

Profile

Backport(バックポート) #2453

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

Added by Yuya Watanabe about 8 years ago. Updated about 8 years ago.

Status:
Fixed(完了)
Priority:
Normal(通常)
Assignee:
Target version:
Start date:
2011-10-03
Due date:
% Done:

100%


Description

概要

ログイン時に自動ログインにチェックを入れているにも関わらず,次回自動ログインは成功するが,その次の自動ログインに失敗する.
失敗する原因として自動ログイン用の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


Related issues

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

Associated revisions

Revision 4e715d63 (diff)
Added by Yuya Watanabe about 8 years ago

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

History

#1 Updated by Yuya Watanabe about 8 years ago

  • Target version set to OpenPNE 3.6.0

#2 Updated by Yuya Watanabe about 8 years ago

  • Description updated (diff)

#3 Updated by Yuya Watanabe about 8 years ago

  • Assignee set to Yuya Watanabe

#4 Updated by wa ta about 8 years ago

  • Status changed from New(新規) to Pending Review(レビュー待ち)
  • % Done changed from 0 to 50

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

#5 Updated by Kousuke Ebihara about 8 years ago

  • Status changed from Pending Review(レビュー待ち) to Pending Testing(テスト待ち)
  • % Done changed from 50 to 70

#6 Updated by Yuma Sakata about 8 years ago

  • Status changed from Pending Testing(テスト待ち) to Rejected(差し戻し)
  • % Done changed from 70 to 50

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

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

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

#7 Updated by Kousuke Ebihara about 8 years ago

  • Status changed from Rejected(差し戻し) to Pending Testing(テスト待ち)
  • % Done changed from 50 to 70

Yuma Sakata は書きました:

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

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

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

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

#8 Updated by Yuma Sakata about 8 years ago

  • Status changed from Pending Testing(テスト待ち) to Fixed(完了)
  • % Done changed from 70 to 100

テストOKです。

Also available in: Atom PDF