2013-09-24 102 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