1.9で顧客ログインが機能しない


42

Magento 1.9.0.1の新規インストールを行ったところ、顧客のログインフォームで非常に奇妙な動作が見られました。

Chrome(バージョン36)では、ログインフォームは機能しません。ログインページにリダイレクトされます。エラーメッセージはありません。ただし、新しいシークレットウィンドウを開くと、問題なくログインできます。これはCookieの問題だと思い、ブラウザからすべてのCookieを消去して再試行しましたが、同じ結果が得られました。どちらの場合も、問題なく管理パネルにログインできます。

また、FirefoxとSafariの両方でこれを試しました。Firefox同じことが起こると思いますが(一貫してではなく、Cookieをクリアすることで修正できます)、Safariで複製できませんでした。

Magentoの他のバージョンでは、これに関する問題は一度もありません。バージョン1.9でMagentoがCookieを処理する方法に何らかの根本的な変更がありますか、これをより安定させるためにできることはありますか?


リンクを共有してユーザー/パスをテストできますか
MTM 14

残念ながら、それはすべて私の仕事のVPNの背後に縛られています。
ジョシュペニントン14

Chromeを再インストールして確認します。
Niloct

再インストール後も同じ結果になります。
ジョシュペニントン14

1
サイトをせずにアクセスしたとき、私は、問題だった、クライアントのサイトで同様の問題を持つかつてwww例えばabc.comそれは、その後にリダイレクトされましたwww.abc.com。この場合、ブラウザーは両方のCookieを設定していたため、ログインは特別に機能しなくなりましたがwww、ログインせずに手動でCookieを削除すると、再び機能し始めます。
MTM 14

回答:


38

私は同じ問題を抱えていた....

答えは、テーマがという変数を提供していないということform_keyです。

上記のように、追加する必要があります。

<input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey(); ?>" />

あなたはすぐにそれを追加します <ul class="form-list">

login.phtmlテーマの各ファイルに。

また、カートのアイテムの更新量に問題がある場合があります

以下が重要ですform_keys

時間の始まり以来、MagentoのバックエンドにはXSS攻撃から保護するフォームキーが含まれていました[1]。Magento 1.8では、ほぼ同じ理由でフォームキーがフロントエンドに入りました。ブラウザを使用して、別のWebサイトからのフォーム送信を防ぐためです。悪意のある攻撃者は、ユーザーが別のブラウザタブにいる間にカートにアイテムを追加したり、注文を完了したりできます。サイトは、Magentoの注文を待っているブラウザタブの実際のHTMLコンテンツにアクセスできないため、予測可能なURLに依存しています。ただし、Magentoストアに送信されるものはすべてCookieを送信するため、セッションが使用されます。

サーバー上でアクションを生成する各フォームまたは各リンクに一意のキーを追加すると、URLまたはフォームのコンテンツは予測できなくなります。フォームキーはセッションデータに保存され、サーバーへの送信時に検証されます。それらが一致しない場合、フォームキーエラーが発生し、アクションは完了しません。


3
上記の「form_key」非表示入力をフォームに追加します:app / design / frontend / base / default / template / persistent / checkout / onepage / login.phtml
Flipmedia

5
使用するコードのはるかに優れたスニペットは<?php echo $this->getBlockHtml('formkey'); ?>、大量の入力ではありません。
ナバー14

フォームを閉じるタグの前にこれを貼り付けます<?php echo $ this-> getBlockHtml( 'formkey'); ?>
タヒルヤシン

美しい、これは私のために働いた。どうもありがとうございました!
CodingMageSheen

うわー、私はこれを非常に長く検索しました>。<!どうもありがとう!
キーノラフラッフボール

8

そうかも知れない:

cookie setting issue in Chrome browser

または

Magento 1.9はform key validation at customer loggin and registerページを使用してい ます。

そのPost actionusing function _validateFormKey()でコントローラでフォームキーを確認してください

form key issue: form key missing このコードをフォームに追加してください

<input name="form_key" type="hidden" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" />

または

Cookie domain setting issue gotoチェック設定が適切かどうか

Admin>System>configuration>General>Web>Session Cookie Management


1
ログインフォームにはform_keyフィールドが既にあり、Cookieドメインを設定しましたが、これも修正しませんでした。
ジョシュペニントン14

してくださいチェックaccountcontroller.phpブラウザや後藤から削除クッキーであれば($この- !> _ validateFormKey()){働いたりされていません
アミットベラ

フォームキーは適切に検証されています。実際、loginPostActionは完全に正常に実行されているようです。
ジョシュペニントン14

1
@AmitBera magento chatにお会いしましょうか?ウィッシュリストモジュールに関連する問題がありますか?
バタフライ

@AmitBeraキーを設定しましたが、まだ機能していません。また、accountcontroller.phpでif (!$this->_validateFormKey()) {falseが返されるため、Magentoは指定されたキーを検証できません。なぜそれが起こるのか?
-Arvind07

6

問題は、関連するクッキーのようだとして、にクッキーの寿命を大きくしてみてください86400の下で

Sytem -> Configuration -> Web -> Session and Cookie Management


理由として、デフォルトでは、Cookieの有効期間は3600(1時間)に設定されます。ただし、エンドユーザーのコンピューターの時間がサーバーの時間よりも先に進んでいる場合、Magentoフロントエンドとバックエンドの両方にCookieは設定されません。たとえば、エンドユーザーのコンピューターの時間はサーバーの時間よりも1時間進んでいます。つまり、ユーザーがログインするかアイテムを追加しようとすると、Cookie(ユーザーのセッションIDを保持)が期限切れになります。


4

将来の読者向け:この問題には多くの原因が考えられます。ログイン中、セキュリティ上の理由から一部の例外ログが抑制されるため、問題はに表示されませんvar/log/exception.log

問題を診断するには:

  1. 開いてメソッドにapp/code/core/Mage/Customer/controllers/AccountController.php移動しloginPostActionます。
  2. Mage::logException($e);通話のコメントを一時的に解除し 、変更を保存します
  3. フロントエンドから再度ログインして、同じ例外をトリガーしてください。
  4. 例外ログで最後のエラーを確認し、調査します。
  5. 例外がスローされなくなるまで、前の2つの手順を繰り返します。

への変更を元に戻すことを忘れないでくださいapp/code/core/Mage/Customer/controllers/AccountController.php

私の問題の原因は、モジュールが(誤って)の<codePool>community</codePool>代わりに持っていたため、クラスが自動ロードに失敗したことでした<codePool>local</codePool>


ソリューションを試しましたが、ログインできませんが、exception.logが作成されていません!
ジョン

4

永続的なログインphtmlファイルに以下のコード行を追加するだけで問題を修正しました。

<input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey(); ?>" />

1
解決策をありがとう。私はそれでほぼ半日を無駄にしました。そしてついにこの解決策を見つけました。
ガウラフアグラワル

3

OK だから

/app/design/frontend/default/template-name/template/persistent/customer/form/

そして貼り付け

<input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey(); ?>" />

<ul class="form-list">

それでおしまい。


3

ワニスキャッシュを使用している場合は、別の問題がある可能性があります。他の場所で見つかった解決策を引用しています。 https://github.com/nexcess/magento-turpentine/issues/169

そしてここに行きます...前回ログイン時にこの問題が発生したとき、同じ名前の "フロントエンド"を持つ2つの異なるCookieを "取得"していることに気付きました。これらのCookieのフィールドはすべて、 「ドメイン」フィールド。最初のCookieのドメイン値は「mydomain.com」で、2番目のCookieは「www.mydomain.com」でした。これは、ユーザーがフロントエンドCookieをまだ持っておらず、ブラウザのurlに「mydomain.com」と入力した場合に発生します。これにより、障害のある「フロントエンド」Cookieが設定され、問題が発生します。サーバーに戻ると、Webユーザーが「mydomain.com」をヒットして「www.mydomain.com」を提供するというルールがあります。これは、ユーザーのブラウザでは、アドレスバーのURLが「mydomain.com」から変更されることを意味します 「www.mydomain.com」に。これがログインの問題と関係があるかどうかはわかりません。言及しただけです。解決策:Turpentineキャッシングオプションでのmagentoの構成には、「ホストの正規化」オプションがあります。有効にする必要があります。これで面倒なことはありません!お役に立てれば!


2

この問題の理由は、カスタムログインフォームにform_keyが含まれておらず、MagentoのloginPostActionでフォームキーの検証が行われているためです。

以下のように修正できます。

  1. app / design / frontend / [Your-package] / [Your-theme] /template/customer/form/login.phtmlに移動します

見つける:

上記のコードの直後にこれを貼り付けます:

<input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey(); ?>" />
  1. app / design / frontend / Your-package] / [Your-theme] /template/persistent/customer/form/login.phtmlに移動し、同じ変更を適用します。

1

上記は私にとってはまったく問題なく動作しましたが、Magento 1.4.1から1.9.1にアップグレードしていたため、大きな飛躍を遂げました。ファイルは上記の場所にはありませんが、app / design / frontend / BASEフォルダーにあります。

/ app / design / frontend / BASE / default / template / persistent / customer / form /

このベースフォルダーには、Magento 1.4以降の多くの一般的なファイルが保存されているので、読みました...これにより、誰かの手間が省けました。


1

ソーシャルログイン拡張機能を使用している場合は、そのlogin.phtmファイルにフォームキーも追加します


1
<input name = "form_key" type = "hidden" value = "<?php echo Mage :: getSingleton( 'core / session')-> getFormKey()?>" />
Yatin Patel

1

サーバーにphp-mbstringがインストールされ、有効になっていることを確認してください。

そうでない場合、管理者ログインは機能しますが、顧客は機能しません。

このチェックは、次のphpinfo()行の出力を調べるか、一時的にログイン例外を有効にすることで実行できます177app/code/core/Mage/Customer/controllers/AccountController.php

操作では、ログに記録された例外トレースで顧客のパスワードを開示できることに注意してください。


0

同じ問題があり、すべてのCookieを削除することで解決しました。複数の異なるmagentoショップがあり、それらに同時にログインすると、問題が発生するようです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.