2013-09-24 130 views
2

每次我登录到管理的Joomla我得到以下错误:的Joomla 3无效的令牌错误

The most recent request was denied because it contained an invalid security token. Please refresh the page and try again.

而且我可以得到管理部分的唯一途径是回到页面或2,我英寸。什么可能导致这个真正恼人的行为?

我使用K2运行Joomla 3.1.5。

回答

3

似乎这个问题得到了很多意见,所以这里是我想出来处理令牌错误的解决方案。由于看到错误对用户可能没有任何意义,因此我想将用户登录并将令牌错误重定向到主页。我能做到的唯一方法就是使用插件。

贷给joomunited.com为原始令牌拦截器插件,可以找到here

这是我的修改版本,其中包括用户注销和重定向到主页的消息。希望这可以帮助!

tokeninterceptor.php:

class PlgSystemTokeninterceptor extends JPlugin 
{ 

    public function __construct(&$subject, $config = array()) 
    { 
     parent::__construct($subject, $config); 
     $app = JFactory::getApplication(); 

     if (($app->isSite() && $this->params->get('use_frontend')) || ($app->isAdmin() && $this->params->get('use_backend'))) 
     { 
      register_shutdown_function(array($this,'redirectToHome')); 
     } 

    } 

    public function redirectToHome() 
    { 
     $content = ob_get_contents(); 

     if($content == JText::_('JINVALID_TOKEN') || $content == 'Invalid Token') 
     { 
      $app = JFactory::getApplication(); 

      if (!JFactory::getUser()->guest) 
      { 
       $app->logout(); 
      } 

      $app->redirect(JURI::base().'index.php?invalid_token=true'); 

      return false; 
     } 
    } 

    function onAfterInitialise() 
    { 
     $app = JFactory::getApplication(); 
     $invalid_token = $app->input->get('invalid_token', 'false'); 

     if ($invalid_token == 'true') 
     { 
      $app->enqueueMessage(JText::_('JINVALID_TOKEN'), 'warning'); 
     } 

     return true; 
    } 

} 
+0

谢谢......修改我们的意见,然后重定向回登录页面,并显示:“您的会话已过期。”而不是默认(对访客无用)“无效令牌” –

1

这是因为如果你点击了两次,并提交您的登录第二次:

  • 第一次登录成功
  • 第二个将失败(无效令牌)

但你已经登录了第一个,所以你可以使用管理员。

一些插件可能导致这种情况;并且自从您登录后,我想您可以排除缓存。

+0

发生这种情况的原因很多,其中之一是登录页面在一夜之间打开,然后在第二天登录。 我会假设浏览器缓存也可能导致此问题。 – Eoin

0

只需按下按钮,在浏览器中,然后按刷新

+0

感谢您的建议,但这不是真正的解决方案。当时这是处理它的一种方式,但我更关心修复根本原因。 – doovers

-1

只需在浏览器中按下后退按钮,然后按刷新!为我工作!

+2

这不是一个真正的解决方案,而是重申OP所发现的烦人之处。 – Rytis

1

我们的托管客户之一有他的Joomla 3.3.X这个问题。

登录管理员在显示“无效安全”消息之前加载了很长时间。

我按下了我的浏览器,并能够登录。

我清除了所有缓存,升级到最新版本,更改密码,问题就消失了。

当您要退出Joomla admin时,不要忘记始终使用“注销”选项,而不仅仅关闭浏览器。

如果客户端很快就会返回相同的错误,我将进行更新。

0

只需禁用tokenintercepter插件。它会工作。

+0

谢谢你的建议,但这并不能以任何方式回答原始问题......在问题中没有提到令牌拦截器插件,只是作为问题的解决方案。 – doovers