Bug(バグ) #2469
ログイン停止にしたメンバで自動ログインにチェックをいれてログインしようとしたときに「Internal Server Error」が発生する
Start date:
2011-10-05
Due date:
% Done:
100%
3.6 で発生するか:
Unknown (未調査)
3.8 で発生するか:
Unknown (未調査)
Description
概要¶
ログイン停止にしたメンバで自動ログインにチェックを入れてログインしようとしたときに「Internal Server Error」が発生する.
再現方法¶
- 管理画面のメンバ管理(/pc_backend.php/member/list)でIDが1のメンバのログイン停止を行う
- より具体的には(pc_backend.php/member/reject/id/1)で「有効にする」をクリックする
- SNSのログイン画面を開いてIDが1のメンバのメールアドレス及びパスワードの入力と「次回から自動的にログイン」にチェックを入れて「ログイン」をクリックする
- 「現在、サーバが混み合っているか、メンテナンス中です。」という表示がされる
原因¶
以下の箇所で249行目ではログインが停止されているという理由でログアウト状態となるが,251行目ではフォーム内容を確認し253行目を実行する.
この253行目を実行する際に同ファイル184行目でメンバIDを取得するが,249行目ですでにログアウト状態となっていてメンバIDを取得できないためLogicException()が発生する.
lib/user/opSecurityUser.class.php
249 $this->initializeUserStatus(); 250 251 if ($this->getAuthAdapter()->getAuthForm()->getValue('is_remember_me')) 252 { 253 $this->setRememberLoginCookie(); 254 }
181 else 182 { 183 $rememberKey = opToolkit::getRandom(); 184 if (!$this->getMemberId()) 185 { 186 throw new LogicException('No login'); 187 } 188 $this->getMember()->setConfig('remember_key', $rememberKey);
確認環境¶
OpenPNE3.7.0-dev (master)
OpenPNE3.6.0-dev (stable-3.6.x)
Related issues
Associated revisions
(fixes #2469) fixed not to occur internal server error
History
#1
Updated by Yuya Watanabe over 11 years ago
- Description updated (diff)
#2
Updated by Yuya Watanabe over 11 years ago
- Description updated (diff)
#3
Updated by Yuya Watanabe over 11 years ago
- Target version set to OpenPNE 3.7.0
#4
Updated by Yuya Watanabe over 11 years ago
- Description updated (diff)
#5
Updated by Yuya Watanabe over 11 years ago
- Status changed from New(新規) to Accepted(着手)
- Assignee set to Yuya Watanabe
修正方針¶
setRememberLoginCookie()はログインしている状態で意味があるので,認証しているかどうかを先に確認する方がいいと思われる.
コードを見てみると認証しているかどうかを確認する部分が該当箇所の直後である256行目に存在するため,この中で処理を行うようにすることが適切であると考えられる.
lib/user/opSecurityUser.class.php
249 $this->initializeUserStatus(); 250 251 if ($this->getAuthAdapter()->getAuthForm()->getValue('is_remember_me')) 252 { 253 $this->setRememberLoginCookie(); 254 } 255 256 if ($this->isAuthenticated()) 257 { 258 $this->setCurrentAuthMode($this->getAuthAdapter()->getAuthModeName()); 259 $uri = $this->getAuthAdapter()->getAuthForm()->getValue('next_uri'); 260
実装案¶
diff --git a/lib/user/opSecurityUser.class.php b/lib/user/opSecurityUser.class.php index 7d66a46..2dd1714 100644 --- a/lib/user/opSecurityUser.class.php +++ b/lib/user/opSecurityUser.class.php @@ -248,13 +248,13 @@ class opSecurityUser extends opAdaptableUser $this->initializeUserStatus(); - if ($this->getAuthAdapter()->getAuthForm()->getValue('is_remember_me')) - { - $this->setRememberLoginCookie(); - } - if ($this->isAuthenticated()) { + if ($this->getAuthAdapter()->getAuthForm()->getValue('is_remember_me')) + { + $this->setRememberLoginCookie(); + } + $this->setCurrentAuthMode($this->getAuthAdapter()->getAuthModeName()); $uri = $this->getAuthAdapter()->getAuthForm()->getValue('next_uri');
#6
Updated by wa ta over 11 years ago
- Status changed from Accepted(着手) to Pending Review(レビュー待ち)
- % Done changed from 0 to 50
更新履歴 5b212017f7a4c20dd4ea5d7b9a6240559d6b8ee3 で適用されました。
#7
Updated by Mutsumi Imamura over 11 years ago
- 360対象 set to 3.6.0
#8
Updated by Kousuke Ebihara over 11 years ago
- Status changed from Pending Review(レビュー待ち) to Pending Testing(テスト待ち)
- % Done changed from 50 to 70
#9
Updated by Shouta Kashiwagi almost 11 years ago
- Status changed from Pending Testing(テスト待ち) to Fixed(完了)
- % Done changed from 70 to 100
- 3.6 で発生するか set to Unknown (未調査)
- 3.4 で発生するか set to Unknown (未調査)
テストOKです。
#10
Updated by Yuma Sakata over 10 years ago
- Target version changed from OpenPNE 3.7.0 to OpenPNE 3.9.0-old
- 3.8 で発生するか set to Unknown (未調査)