Quản trị viên Magento 1.9.2.1 SUPEE-7405 không hoạt động


8

Tôi đã cài đặt bản vá mới ngày hôm nay - SUPEE-7405 qua FTP từ trang web này.

https://magentary.com/kb/install-supee-7405-without-ssh/

Bây giờ, có vẻ như cửa hàng giao diện người dùng của tôi vẫn hoạt động, tuy nhiên khi tôi cố gắng đăng nhập vào / admin, nó sẽ đưa tôi đến trang đăng nhập / mật khẩu ... một khi tôi đăng nhập, tôi gặp lỗi.

Invalid method Mage_Core_Model_Session::validateFormKey(Array
(
    [0] => y6h9TjgvchV8hCZT
)
)

Trace:
#0 /home/a0cegcom/public_html/app/code/core/Mage/Admin/Model/Observer.php(73): Varien_Object->__call('validateFormKey', Array)
#1 /home/a0cegcom/public_html/app/code/core/Mage/Admin/Model/Observer.php(73): Mage_Core_Model_Session->validateFormKey('y6h9TjgvchV8hCZ...')
#2 /home/a0cegcom/public_html/app/code/core/Mage/Core/Model/App.php(1357): Mage_Admin_Model_Observer->actionPreDispatchAdmin(Object(Varien_Event_Observer))
#3 /home/a0cegcom/public_html/app/code/core/Mage/Core/Model/App.php(1336): Mage_Core_Model_App->_callObserverMethod(Object(Mage_Admin_Model_Observer), 'actionPreDispat...', Object(Varien_Event_Observer))
#4 /home/a0cegcom/public_html/app/Mage.php(448): Mage_Core_Model_App->dispatchEvent('controller_acti...', Array)
#5 /home/a0cegcom/public_html/app/code/core/Mage/Core/Controller/Varien/Action.php(527): Mage::dispatchEvent('controller_acti...', Array)
#6 /home/a0cegcom/public_html/app/code/core/Mage/Adminhtml/Controller/Action.php(160): Mage_Core_Controller_Varien_Action->preDispatch()
#7 /home/a0cegcom/public_html/app/code/core/Mage/Core/Controller/Varien/Action.php(407): Mage_Adminhtml_Controller_Action->preDispatch()
#8 /home/a0cegcom/public_html/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(254): Mage_Core_Controller_Varien_Action->dispatch('index')
#9 /home/a0cegcom/public_html/app/code/core/Mage/Core/Controller/Varien/Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#10 /home/a0cegcom/public_html/app/code/core/Mage/Core/Model/App.php(365): Mage_Core_Controller_Varien_Front->dispatch()
#11 /home/a0cegcom/public_html/app/Mage.php(684): Mage_Core_Model_App->run(Array)
#12 /home/a0cegcom/public_html/index.php(88): Mage::run('', 'store')
#13 {main}

có ý kiến ​​gì không Tôi đã xóa var / cache và var / session mà không gặp may

Câu trả lời:


11

Đối với tôi có vẻ như bản vá không được cài đặt đúng cách.

Các validateFormKeychức năng được bao gồm trong các bản vá.

  • Mở app/code/core/Mage/Core/Model/Session.phptệp và kiểm tra lại nếu validateFormKeychức năng ở đây
  • Nếu tệp bị ghi đè app/code/local/Mage/Core/Model/Session.php, bạn phải thêm các phương thức mới validateFormKeyrenewFormKeytheo cách thủ công vào tệp bị ghi đè. Đồng thời thay đổi dòng 60 từ:

    $this->setData('_form_key', Mage::helper('core')->getRandomString(16));

    đến

    $this->renewFormKey();
  • Nếu nó ở đây, nó chắc chắn là một vấn đề bộ nhớ đệm / biên dịch. Xóa bộ nhớ cache của bạn, cũng như mọi bộ đệm khác (Varnish / APC, v.v.)

  • Nếu bạn đã bật tính năng biên dịch, vui lòng tắt biên dịch rồi biên dịch lại.
  • Nếu chức năng không có ở đây, điều đó có nghĩa là các tệp chưa được tải lên đúng cách. Xin lưu ý rằng khi bạn trích xuất kho lưu trữ từ Magentary, các tệp được trích xuất trong thư mục SUPEE-7405-1.9.2.1, bạn phải mở thư mục này và trích xuất các tệp từ thư mục này sang thư mục gốc Magento của bạn, chuyển toàn bộ SUPEE-7405- Thư mục 1.9.2.1 sẽ không áp dụng bản vá.

7

Các Nexcess_Turpentinemô-đun ghi đè app/code/core/Mage/Core/Model/Session.phpnhư app/code/local/Mage/Core/Model/Session.php. Chúng tôi chỉ chạy vào đây. Đây rất có thể là vấn đề của bạn. Để xoa dịu bản vá này mà không mất quá nhiều thời gian cho nó, tôi nghĩ giải pháp thích hợp nhất là thêm các thay đổi bản vá vào tệp ghi đè cục bộ. Turpentine ghi đè tập tin đó, tôi tin, bởi vì viết lại không hoạt động cho kịch bản cụ thể mà họ cần phải bao gồm. Tôi không nghĩ rằng điều này có thể được chuyển đổi thành viết lại.

Đây là thay đổi bản vá cần được áp dụng:

--- a/app/code/core/Mage/Core/Model/Session.php
+++ b/app/code/core/Mage/Core/Model/Session.php
@@ -36,7 +36,7 @@
  */
 class Mage_Core_Model_Session extends Mage_Core_Model_Session_Abstract
 {
-    public function __construct($data=array())
+    public function __construct($data = array())
     {
         $name = isset($data['name']) ? $data['name'] : null;
         $this->init('core', $name);
@@ -50,8 +50,27 @@ class Mage_Core_Model_Session extends Mage_Core_Model_Session_Abstract
     public function getFormKey()
     {
         if (!$this->getData('_form_key')) {
-            $this->setData('_form_key', Mage::helper('core')->getRandomString(16));
+            $this->renewFormKey();
         }
         return $this->getData('_form_key');
     }
+
+    /**
+     * Creates new Form key
+     */
+    public function renewFormKey()
+    {
+        $this->setData('_form_key', Mage::helper('core')->getRandomString(16));
+    }
+
+    /**
+     * Validates Form key
+     *
+     * @param string|null $formKey
+     * @return bool
+     */
+    public function validateFormKey($formKey)
+    {
+        return ($formKey === $this->getFormKey());
+    }
}

3

Các trang web của tôi có một phiên bản sửa đổi véc ni / turpentine của Session.phpthư mục trong app/code/local/Mage/Core/Model/thư mục.

Làm cho các chức năng phù hợp trong tệp đó bây giờ trông giống như sau và mọi thứ sẽ hoạt động trở lại.

public function getFormKey()
{
    if (Mage::registry('replace_form_key') &&
            !Mage::app()->getRequest()->getParam('form_key', false)) {
        // flag request for ESI processing
        Mage::register('turpentine_esi_flag', true, true);
        return '{{form_key_esi_placeholder}}';
    } else {
        return $this->real_getFormKey();
    }
}

public function real_getFormKey()
{
    if (!$this->getData('_form_key')) {
        //$this->setData('_form_key', Mage::helper('core')->getRandomString(16));
        $this->renewFormKey();
    }
    return $this->getData('_form_key');
}

public function renewFormKey()
{
    $this->setData('_form_key', Mage::helper('core')->getRandomString(16));
}

public function validateFormKey($formKey)
{
    return ($formKey === $this->getFormKey());
}

2

Cũng đảm bảo rằng bạn không sửa đổi app/code/core/Mage/Core/Model/Session.phptrực tiếp, nhưng sao chép tệp vào app/code/local/Mage/Core/Model/Session.phpvà thực hiện sửa đổi phù hợp.

(Magento sẽ kiểm tra localđường dẫn thư mục trước khi sử dụng coređường dẫn.


Tôi đã quên và về cơ bản đã có Magento 1.9.2.4 chạy với ứng dụng / mã / cục bộ / Mage / Core / từ phiên bản magento trước đó tại địa phương ... do đó đăng nhập quản trị viên của tôi sẽ bị hỏng trên POST.
BENN1TH

1

Thêm các chức năng dưới đây vào bên thứ 3 / Mô-đun tùy chỉnh. Nếu không thực hiện / mở rộng các chức năng đúng cách.

/**
* Creates new Form key
*/
public function renewFormKey()
{
$this->setData('_form_key', Mage::helper('core')->getRandomString(16));
}

/**
* Validates Form key
*
* @param string|null $formKey
* @return bool
*/
public function validateFormKey($formKey)
{
return ($formKey === $this->getFormKey());
}
}

Cảm ơn!


0

Tôi cũng gặp lỗi tương tự, đối với tôi, tôi đã phải khôi phục bản vá (sử dụng -R sau tệp .sh, nhưng không biết bạn sẽ làm như thế nào qua PHP)

Sau đó, trong hệ thống goto Magento -> chung -> web -> cài đặt xác thực phiên

Tôi đã thay đổi 'Xác thực HTTP_X_FORWARDED_FOR' thành 'không' và 'Xác thực HTTP_USER_AGENT' thành 'có. Đảm bảo tên miền cookie của bạn được đặt chính xác cũng như 'yourdomain.com'

Khi tôi đã thực hiện việc này, hãy áp dụng lại bản vá và có thể đăng nhập. Hy vọng điều này sẽ giúp bạn giải quyết nó - có vẻ như bất kỳ thông số phiên không chính xác nào cũng sẽ gây ra sự cố khóa biểu mẫu.

Hãy chắc chắn rằng bạn cũng xóa cookie trình duyệt của mình trước khi thử nghiệm

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.