Đăng nhập của khách hàng không hoạt động trong 1.9


42

Tôi mới thực hiện cài đặt Magento 1.9.0.1 mới và tôi thấy một số hành vi rất kỳ quặc với biểu mẫu đăng nhập của khách hàng.

Trong Chrome (phiên bản 36), hình thức đăng nhập không hoạt động. Tôi chỉ chuyển hướng đến trang đăng nhập. Không có thông báo lỗi. Tuy nhiên, khi tôi mở Cửa sổ ẩn danh mới, tôi có thể đăng nhập tốt. Nghĩ rằng đây là một vấn đề về cookie, tôi đã xóa tất cả các cookie của mình khỏi trình duyệt và thử lại và tôi nhận được kết quả tương tự. Trong cả hai trường hợp, tôi có thể đăng nhập vào bảng quản trị mà không gặp vấn đề gì.

Tôi cũng đã thử điều này trong cả Firefox và Safari. Firefox tôi sẽ thấy điều tương tự xảy ra (nhưng không nhất quán và tôi có thể khắc phục bằng cách xóa cookie) và tôi không thể sao chép trong Safari.

Tôi chưa bao giờ gặp vấn đề với điều này trong bất kỳ phiên bản Magento nào khác. Có một số thay đổi cơ bản trong cách Magento xử lý cookie trong phiên bản 1.9 và / hoặc tôi có thể làm gì để ổn định hơn?


bạn có thể chia sẻ liên kết và kiểm tra người dùng / vượt qua
MTM

Thật không may, tất cả đều bị ràng buộc đằng sau VPN của công việc của tôi.
Josh Pennington

Cài đặt lại Chrome và xác minh.
Niloct

Kết quả tương tự sau khi cài đặt lại.
Josh Pennington

1
tôi đã từng có một vấn đề tương tự trong một trang web của khách hàng, vấn đề là, khi trang web được truy cập mà không có wwwví dụ như abc.comsau đó nó đã được chuyển hướng đến www.abc.com. Trong trường hợp này, trình duyệt đã thiết lập cookie cho cả hai và thông tin đăng nhập đặc biệt ngừng hoạt động, nhưng nếu tôi xóa thủ công cookie mà không có wwwthông tin đăng nhập bắt đầu hoạt động trở lại. Bạn có thể kiểm tra xem có giống như vậy không?
MTM

Câu trả lời:


38

Tôi đã từng gặp vấn đề tương tự....

Câu trả lời là chủ đề của bạn không cung cấp một biến được gọi form_key.

Như đã nêu ở trên tôi phải thêm:

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

bạn thêm nó ngay sau đó <ul class="form-list">

đến từng login.phtmltệp của tôi cho chủ đề.

Bạn cũng có thể có vấn đề với số lượng cập nhật của các mặt hàng giỏ hàng

Đây là tầm quan trọng của form_keys:

Kể từ khi bắt đầu, phần phụ trợ của Magento chứa khóa biểu mẫu bảo vệ chống lại các cuộc tấn công XSS [1]. Với Magento 1.8, khóa biểu mẫu đã được đưa vào frontend vì lý do tương tự: để bảo vệ chống lại việc gửi biểu mẫu từ một trang web khác, sử dụng trình duyệt của bạn. Kẻ tấn công độc hại có thể thêm nội dung vào giỏ hàng của bạn trong khi bạn đang ở trong một tab trình duyệt khác hoặc thậm chí hoàn tất đơn đặt hàng cho bạn. Điều này phụ thuộc vào các URL có thể dự đoán được, bởi vì trang web sẽ không có quyền truy cập vào nội dung HTML thực tế trong tab trình duyệt nơi bạn đang chờ đặt hàng Magento. Tuy nhiên, mọi thứ được gửi đến cửa hàng Magento sẽ gửi cookie của bạn và do đó sử dụng phiên của bạn.

Bằng cách thêm một khóa duy nhất cho mỗi biểu mẫu hoặc vào mỗi liên kết tạo ra một hành động trên máy chủ, URL hoặc nội dung biểu mẫu sẽ không còn có thể dự đoán được nữa. Khóa biểu mẫu được lưu trữ trong dữ liệu phiên và được xác thực khi gửi đến máy chủ. Nếu chúng không khớp, bạn sẽ gặp lỗi khóa biểu mẫu và hành động không được hoàn thành.


3
Thêm đầu vào ẩn "form_key" ở trên vào biểu mẫu được đặt: app / design / frontend / base / default / template / continent / checkout / onepage / login.phtml
Flipmedia

5
Một đoạn mã tốt hơn nhiều để sử dụng sẽ <?php echo $this->getBlockHtml('formkey'); ?>thay vì đầu vào lớn.
Navarr

Dán thẻ này trước thẻ đóng biểu mẫu <? Php echo $ this-> getBlockHtml ('formkey'); ?>
Tahir Yasin

Đẹp, điều này làm việc cho tôi. Cảm ơn bạn rất nhiều tôi đã bình chọn!
CodingMageSheen

Chờ đã, tôi đã tìm kiếm quá lâu cho việc này>. <! Cảm ơn rất nhiều!
Keenora Fluffball

8

Nó có thể:

cookie setting issue in Chrome browser

HOẶC LÀ

Magento 1.9 đang sử dụng form key validation at customer loggin and registertrang.

Trên Post actionđó kiểm tra khóa biểu mẫu using function _validateFormKey()tại bộ điều khiển

form key issue: form key missing vì vậy hãy thêm mã này vào mẫu của bạn

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

HOẶC LÀ

Cookie domain setting issue thiết lập kiểm tra goto có phù hợp hay không

tại Admin>System>configuration>General>Web>Session Cookie Management


1
Biểu mẫu đăng nhập đã có trường form_key và tôi đã đặt Tên miền Cookie và điều đó cũng không khắc phục được.
Josh Pennington

vui lòng xóa cookie khỏi trình duyệt Hoặc Goto accountcontroll.php kiểm tra xem (! $ this -> _ validateFormKey ()) {có hoạt động hay không
Amit Bera

Khóa biểu mẫu đang xác nhận hợp lệ. Trên thực tế, có vẻ như loginPostAction đang chạy hoàn toàn tốt.
Josh Pennington

1
@AmitBera Tôi có gặp bạn trò chuyện magento không? Tôi có vấn đề liên quan đến mô-đun wishlist?
Bướm

@AmitBera Tôi đã đặt khóa, nhưng nó vẫn không hoạt động. Ngoài ra, trong tài khoản điều khiển.php if (!$this->_validateFormKey()) {trả về false, điều đó có nghĩa là Magento không thể xác thực khóa được cung cấp. Bất cứ ý tưởng tại sao nó xảy ra?
Arvind07

6

Vì sự cố dường như có liên quan đến cookie, hãy thử tăng thời gian sử dụng cookie lên 86400 trong

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


Lý do có thể, theo mặc định tuổi thọ cookie được đặt thành 3600 (1 giờ). Nhưng nếu thời gian máy tính của người dùng cuối chạy trước thời gian của máy chủ, cookie sẽ không được đặt cho giao diện Magento cũng như phụ trợ. Ví dụ: thời gian máy tính của người dùng cuối là 1 giờ so với thời gian của máy chủ, điều đó có nghĩa là cookie (giữ id phiên của người dùng) sẽ hết hạn ngay khi người dùng đăng nhập hoặc cố gắng thêm một mục.


4

Đối với độc giả tương lai: Có nhiều nguyên nhân có thể cho vấn đề này. Trong quá trình đăng nhập, một số ghi nhật ký ngoại lệ bị chặn vì lý do bảo mật, vì vậy vấn đề của bạn sẽ không hiển thị var/log/exception.log.

Để chẩn đoán vấn đề của bạn:

  1. Mở ra app/code/core/Mage/Customer/controllers/AccountController.phpvà đi đến loginPostActionphương pháp.
  2. Tạm thời bỏ Mage::logException($e);cuộc gọi và lưu thay đổi
  3. Hãy thử đăng nhập từ giao diện người dùng một lần nữa để kích hoạt ngoại lệ tương tự.
  4. Nhìn vào (các) lỗi cuối cùng trong nhật ký ngoại lệ và điều tra chúng.
  5. Lặp lại hai bước trước cho đến khi không còn ngoại lệ nào được đưa ra.

Đừng quên hoàn tác các thay đổi app/code/core/Mage/Customer/controllers/AccountController.php!

Nguyên nhân của vấn đề của tôi là do một lớp không thể tự động tải vì mô-đun (không chính xác) đã <codePool>community</codePool>thay thế <codePool>local</codePool>.


Tôi đã thử giải pháp của bạn nhưng không có ngoại lệ .log được tạo mặc dù tôi không thể đăng nhập!
Jon

4

Tôi đã khắc phục sự cố bằng cách chỉ thêm dòng mã bên dưới vào tệp phtml đăng nhập liên tục.

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

1
Cảm ơn giải pháp. Tôi đã lãng phí gần nửa ngày cho nó. Và cuối cùng đã tìm thấy giải pháp này.
Gaurav Agrawal

3

ok sau khi kéo dài nửa giờ tôi phát hiện ra chính xác thư mục nào đăng nhập. Tôi phải thay đổi. Vậy đi

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

và dán

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

sau

<ul class="form-list">

đó là nó.


3

Nếu bạn đang sử dụng bộ đệm Varnish, có thể có một vấn đề khác. Tôi đang trích dẫn một giải pháp tôi tìm thấy ở nơi khác. https://github.com/nexcess/magento-turpentine/issues/169

Và ở đây chúng ta đi ... Lần cuối cùng xảy ra với tôi vấn đề này với thông tin đăng nhập tôi nhận thấy rằng tôi đã "có" hai cookie khác nhau có cùng tên. "Frontend". Tất cả các tệp của các cookie này giống hệt nhau ngoại trừ từ "tên miền" trường. Trong cookie đầu tiên, giá trị tên miền là "mydomain.com" trong khi trong phần thứ hai là "www.mydomain.com". Điều này xảy ra khi người dùng chưa có cookie frontend và nhập "mydomain.com" vào url của trình duyệt. Điều này kích hoạt cookie "frontend" bị lỗi được thiết lập và làm mọi thứ rối tung lên! Quay lại máy chủ của chúng tôi, chúng tôi có một quy tắc là nếu người dùng web truy cập "mydomain.com" để phục vụ anh ta "www.mydomain.com". Điều này có nghĩa là trong trình duyệt của người dùng, trong thanh địa chỉ, url được chuyển từ "mydomain.com" đến "www.mydomain.com". Tôi không chắc chắn rằng điều này có liên quan đến vấn đề đăng nhập. Tôi chỉ đề cập đến nó. Giải pháp: Tại cấu hình magento ở các tùy chọn bộ nhớ đệm turpentine, có một tùy chọn "Bình thường hóa máy chủ". Bạn phải kích hoạt nó. Đó là nó! Sau này không có điều lộn xộn không có cookie frontend đôi! Hi vọng điêu nay co ich!


2

Lý do cho vấn đề này là biểu mẫu đăng nhập tùy chỉnh không chứa bất kỳ form_key nào và có một xác thực khóa biểu mẫu xảy ra trong loginPostAction của Magento.

Bạn có thể sửa nó như dưới đây:

  1. Truy cập ứng dụng / thiết kế / frontend / [Gói của bạn] / [Chủ đề của bạn] /template/customer/form/login.phtml

Tìm thấy:

và dán mã này ngay sau đoạn mã trên:

<input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey(); ?>" />
  1. Truy cập ứng dụng / thiết kế / frontend / Your-pack] / [Your-theme] /template/persistent/customer/form/login.phtml và áp dụng các thay đổi tương tự.

1

Những điều trên làm việc với tôi hoàn toàn tốt nhưng tôi đã nâng cấp từ Magento 1.4.1 lên 1.9.1 nên một bước nhảy vọt lớn. Các tập tin không được tìm thấy ở vị trí trên nhưng được đặt trong thư mục app / design / frontend / BASE.

/ ứng dụng / thiết kế / frontend / BASE / default / template / continent / customer / form /

Thư mục cơ sở này chứa rất nhiều tệp phổ biến kể từ Magento 1.4 vì vậy tôi đã đọc ... Hy vọng rằng điều này sẽ giúp ai đó tiết kiệm được nhiều giờ làm việc mà tôi phải mất ..


1

Nếu bạn đang sử dụng bất kỳ tiện ích mở rộng đăng nhập xã hội nào thì hãy thêm khóa biểu mẫu vào tệp login.phtm đó


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

1

Đảm bảo php-mbopes được cài đặt và kích hoạt trên máy chủ của bạn.

Nếu không thì đăng nhập quản trị viên sẽ hoạt động trong khi khách hàng sẽ không.

Kiểm tra này có thể được thực hiện bằng cách xem xét đầu ra phpinfo()hoặc bằng cách tạm thời cho phép ngoại lệ đăng nhập xung quanh dòng 177trong:app/code/core/Mage/Customer/controllers/AccountController.php

Xin lưu ý rằng hoạt động có thể tiết lộ mật khẩu của khách hàng trong theo dõi ngoại lệ được ghi lại.


0

Tôi đã có cùng một vấn đề và giải quyết nó bằng cách xóa tất cả các cookie. Vấn đề dường như xảy ra nếu bạn có nhiều cửa hàng magento khác nhau và đăng nhập vào chúng cùng một lúc.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.