OpenCart - “无效令牌会话”错误 - 如何现在修复并防止将来


OpenCart - "Invalid Token Session" error - how to fix now & prevent in the future?

OpenCart 2.0.3.1

问题#1:在Admin中,尝试编辑多个选项卡中的多个项目通常会导致错误消息"令牌会话无效,请重新登录"。

问题#2:此错误消息似乎以随机间隔发生;我似乎无法确定"超时"。

问题#3:单击"保存"后出现错误消息,这意味着所有更改都将丢失。我打开了许多带有复杂更改的选项卡,我想知道是否可以以某种方式将令牌会话"恢复"到 URL 中,以便我实际上可以保存它们。

我编写了一个 vQmod 脚本,以便在管理选项卡打开时保持登录状态。随意使用它。:)

<?xml version="1.0" encoding="UTF-8"?>
<modification>
    <id>Keep Admin Users Logged In - Opencart 2.x</id>
    <version>1.0</version>
    <vqmver>2.5.1</vqmver>
    <author>Tibor Besze</author>
    <file name="admin/controller/user/user.php">
        <operation error="skip">
            <search position="after"><![CDATA[class ControllerUserUser extends Controller {]]></search>
            <add trim="true"><![CDATA[
                public function pingUser() {
                    $this->response->addHeader('Content-Type: application/json');
                    $this->response->setOutput(json_encode(1));
                }
            ]]></add>
        </operation>
    </file>
    <file name="admin/controller/common/footer.php">
        <operation error="skip">
            <search position="before"><![CDATA[return $this->load->view('common/footer.tpl', $data);]]></search>
            <add trim="true"><![CDATA[
                if (isset($this->session->data['token'])) {
                    $data['token'] = $this->session->data['token'];
                }
            ]]></add>
        </operation>
    </file>
    <file name="admin/view/template/common/footer.tpl">
        <operation error="skip">
            <search position="before"><![CDATA[</body>]]></search>
            <add trim="true"><![CDATA[
              <?php if (isset($token)) { ?>
              <script type="text/javascript">
                $(document).ready(function() {
                  setInterval(function() {
                    $.ajax({
                      type: "POST",
                      url: "index.php?route=user/user/pingUser&token=<?php echo $token; ?>",
                      dataType: "json",
                      timeout: 10000
                    });
                  }, 15000);
                });
              </script>
              <?php } ?>
            ]]></add>
        </operation>
    </file>
</modification>