Login Pelanggan Tidak Berfungsi pada 1.9


42

Saya baru saja melakukan instalasi baru Magento 1.9.0.1 dan saya melihat beberapa perilaku yang sangat aneh dengan formulir login pelanggan.

Di Chrome (versi 36) formulir masuk tidak berfungsi. Saya baru saja diarahkan ke halaman login. Tidak ada pesan kesalahan. Namun, ketika saya membuka Jendela Penyamaran baru, saya dapat masuk dengan baik. Mengira ini adalah masalah cookie, saya menghapus semua cookie dari browser dan mencoba lagi dan saya mendapatkan hasil yang sama. Dalam kedua kasus, saya dapat masuk ke panel admin tanpa masalah.

Saya juga sudah mencoba ini di Firefox dan Safari. Firefox Saya akan melihat hal yang sama terjadi (tetapi tidak secara konsisten dan saya bisa memperbaikinya dengan menghapus cookie) dan saya tidak bisa meniru di Safari.

Saya tidak pernah memiliki masalah dengan ini di versi Magento lainnya. Apakah ada semacam perubahan mendasar dalam cara Magento menangani cookie di versi 1.9 dan / atau ada yang bisa saya lakukan untuk membuatnya lebih stabil?


bisakah kamu membagikan tautan dan menguji pengguna / lulus
MTM

Sayangnya semuanya terikat di belakang VPN karya saya.
Josh Pennington

Pasang kembali Chrome dan verifikasi.
Niloct

Hasil yang sama setelah menginstal ulang.
Josh Pennington

1
saya pernah mengalami masalah serupa di situs klien, masalahnya adalah, ketika situs diakses tanpa wwwmisalnya abc.comitu kemudian dialihkan ke www.abc.com. Dalam hal ini, browser sedang mengatur cookie untuk keduanya dan login khusus berhenti berfungsi, tetapi jika saya menghapus cookie secara manual yang tanpa wwwlogin mulai bekerja lagi. Dapatkah Anda memeriksa apakah hal yang sama juga terjadi pada Anda?
MTM

Jawaban:


38

Saya punya masalah yang sama ....

Jawabannya adalah bahwa tema Anda tidak menyediakan variabel yang disebut form_key.

Sama seperti yang disebutkan di atas saya harus menambahkan:

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

Anda menambahkannya setelah itu <ul class="form-list">

ke masing-masing login.phtmlfile saya untuk tema.

Anda juga mungkin mengalami masalah dengan memperbarui jumlah item kereta

Inilah pentingnya form_keys:

Sejak awal waktu, backend Magento berisi kunci formulir yang dilindungi terhadap serangan XSS [1]. Dengan Magento 1.8 kunci form telah memasuki frontend dengan alasan yang hampir sama: untuk melindungi terhadap pengiriman formulir dari situs web lain, menggunakan browser Anda. seorang penyerang jahat dapat menambahkan barang ke keranjang Anda saat Anda berada di tab browser yang berbeda atau bahkan menyelesaikan pesanan untuk Anda. Ini bergantung pada URL yang dapat diprediksi, karena situs tidak akan memiliki akses ke konten HTML aktual di tab browser tempat Anda menunggu pesanan Magento. Segala sesuatu yang dikirim ke toko Magento akan mengirimkan cookie Anda dan karenanya menggunakan sesi Anda.

Dengan menambahkan kunci unik ke setiap formulir atau ke setiap tautan yang menghasilkan tindakan di server, URL atau konten formulir tidak lagi dapat diprediksi. Kunci formulir disimpan dalam data sesi dan divalidasi setelah diserahkan ke server. Jika tidak cocok, Anda mendapatkan kesalahan kunci formulir dan tindakan tidak selesai.


3
Tambahkan input tersembunyi "form_key" di atas ke form yang ada: app / design / frontend / base / default / template / persistent / checkout / onepage / login.phtml
Flipmedia

5
Potongan kode yang jauh lebih baik untuk digunakan <?php echo $this->getBlockHtml('formkey'); ?>daripada input besar.
Navarr

Tempel ini sebelum tag penutup formulir <? Php echo $ this-> getBlockHtml ('formkey'); ?>
Tahir Yasin

cantik, ini berhasil buat saya. Terima kasih banyak, saya terpilih!
CodingMageSheen

Waow, saya mencari begitu lama untuk ini>. <! Terima kasih banyak!
Keenora Fluffball

8

Itu mungkin:

cookie setting issue in Chrome browser

ATAU

Magento 1.9 sedang menggunakan form key validation at customer loggin and registerhalaman.

Di Post actionatasnya periksa kunci formulir using function _validateFormKey()di controller

form key issue: form key missing jadi tambahkan kode ini di formulir Anda

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

ATAU

Cookie domain setting issue Pengaturan goto check sudah tepat atau tidak

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


1
Formulir login memang sudah memiliki bidang form_key dan saya mengatur Cookie Domain dan itu juga tidak memperbaikinya.
Josh Pennington

tolong hapus cookie dari browser Atau Goto accountcontroller.php periksa apakah (! $ ini -> _ validateFormKey ()) {berfungsi atau tidak
Amit Bera

Kunci formulir divalidasi dengan benar. Bahkan, sepertinya loginPostAction berjalan dengan sangat baik.
Josh Pennington

1
@AmitBera Haruskah saya bertemu Anda mengobrol magento? Saya memiliki masalah terkait pada modul wishlist?
Butterfly

@AmitBera Saya telah menetapkan kunci, tetapi masih tidak berfungsi. Juga di accountcontroller.php if (!$this->_validateFormKey()) {mengembalikan false yang berarti Magento tidak dapat memvalidasi kunci yang disediakan. Gagasan saya mengapa itu terjadi?
Arvind07

6

Karena masalah ini tampaknya terkait dengan cookie, coba tambah waktu hidup cookie menjadi 86400 di bawah

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


Alasannya mungkin, secara default cookie seumur hidup diatur ke 3600 (1 jam). Tetapi jika komputer pengguna akhir berjalan lebih cepat dari waktu server, cookie tidak akan ditetapkan untuk frontend Magento serta backend. Misalnya, waktu komputer pengguna akhir adalah 1 jam lebih maju dari waktu server, itu berarti cookie (memegang id sesi pengguna) akan kedaluwarsa begitu pengguna masuk atau mencoba menambahkan item.


4

Untuk pembaca di masa mendatang: Ada banyak kemungkinan penyebab masalah ini. Selama login, beberapa pengecualian logging ditekan untuk alasan keamanan, jadi masalah Anda tidak akan muncul var/log/exception.log.

Untuk mendiagnosis masalah Anda:

  1. Buka app/code/core/Mage/Customer/controllers/AccountController.phpdan buka loginPostActionmetode.
  2. Batalkan komentar sementara untuk Mage::logException($e);panggilan dan simpan perubahan
  3. Coba masuk dari ujung depan lagi untuk memicu pengecualian yang sama.
  4. Lihatlah kesalahan terakhir di log pengecualian dan selidiki.
  5. Ulangi dua langkah sebelumnya hingga tidak ada lagi pengecualian yang dilemparkan.

Jangan lupa untuk membatalkan perubahan app/code/core/Mage/Customer/controllers/AccountController.php!

Penyebab masalah saya adalah kelas gagal memuat secara otomatis karena modul (salah) <codePool>community</codePool>bukan <codePool>local</codePool>.


Saya sudah mencoba solusi Anda tetapi tidak ada pengecualian. Log sedang dibuat walaupun saya tidak bisa login!
Jon

4

Saya memperbaiki masalah dengan hanya menambahkan baris kode di bawah ini dalam file phtml login persisten.

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

1
Terima kasih atas solusinya. Saya menghabiskan hampir setengah hari untuk itu. Dan akhirnya menemukan solusi ini.
Gaurav Agrawal

3

ok setelah berjuang selama setengah jam saya menemukan persis di folder mana login.phtml saya harus berubah. Jadi pergilah ke

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

dan tempel

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

setelah

<ul class="form-list">

itu dia.


3

Jika Anda menggunakan tembolok pernis, mungkin ada masalah yang berbeda. Saya mengutip solusi yang saya temukan di tempat lain. https://github.com/nexcess/magento-turpentine/issues/169

Dan ini dia ... Terakhir kali saya mengalami masalah dengan login ini, saya perhatikan bahwa saya telah "mendapatkan" dua cookie berbeda dengan nama yang sama. "Frontend". Semua file cookie ini identik kecuali dari bidang "domain". Dalam cookie pertama, nilai domain adalah "mydomain.com" sedangkan yang kedua adalah "www.mydomain.com". Ini terjadi ketika pengguna tidak memiliki cookie frontend dan mengetik "mydomain.com" di url browsernya. Ini memicu cookie "frontend" yang salah untuk diatur dan mengacaukan semuanya! Kembali di server kami, kami memiliki aturan bahwa jika pengguna web mengklik "mydomain.com" untuk melayaninya "www.mydomain.com". Ini berarti bahwa di browser pengguna, di bilah alamat url dihidupkan dari "mydomain.com" ke "www.mydomain.com". Saya tidak yakin ini ada hubungannya dengan masalah login. Saya hanya menyebutkannya. Solusi: Pada konfigurasi magento pada opsi cache terpentin ada opsi "Normalize host". Anda harus mengaktifkannya. Itu saja! Setelah ini tidak ada hal yang berantakan tidak ada cookie frontend ganda! Semoga ini membantu!


2

Alasan untuk masalah ini adalah form login kustom tidak mengandung form_key dan ada validasi kunci form yang terjadi di loginPostAction of Magento.

Anda dapat memperbaikinya seperti di bawah ini:

  1. Pergi ke app / design / frontend / [Your-package] / [Your-theme] /template/customer/form/login.phtml

Menemukan:

dan rekatkan ini tepat setelah kode di atas:

<input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey(); ?>" />
  1. Pergi ke app / design / frontend / Your-package] / [Your-theme] /template/persistent/customer/form/login.phtml dan terapkan perubahan yang sama.

1

Di atas bekerja untuk saya benar-benar baik-baik saja tetapi saya meningkatkan dari Magento 1.4.1 ke 1.9.1 jadi lompatan besar. File tidak ditemukan di lokasi di atas tetapi berada di folder app / design / frontend / BASE.

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

Folder dasar ini menyimpan banyak file umum sejak Magento 1.4, jadi saya membaca ... Semoga ini akan menghemat seseorang dari berjam-jam pekerjaan yang saya butuhkan ..


1

Jika Anda menggunakan ekstensi login sosial apa pun kemudian juga menambahkan kunci formulir di file login.phtm itu


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

1

Pastikan php-mbstring diinstal dan diaktifkan di server Anda.

Jika tidak maka login admin akan berfungsi sementara pelanggan tidak akan.

Pemeriksaan ini dapat dilakukan dengan melihat ke output phpinfo()atau dengan mengaktifkan sementara pengecualian login di sekitar baris 177dalam:app/code/core/Mage/Customer/controllers/AccountController.php

Sadarilah bahwa operasi dapat mengungkapkan kata sandi pelanggan dalam jejak pengecualian yang dicatat.


0

Saya memiliki masalah yang sama dan menyelesaikannya dengan menghapus semua cookie. Masalahnya tampaknya terjadi jika Anda memiliki beberapa toko magento yang berbeda dan masuk ke mereka secara bersamaan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.