2012-05-16 69 views
0

我試圖修改一個已經嚴重修改的joomla環境。我不是Joomla的開發人員,所以在荒野中有一點迷失,可以這麼說。Joomla身份驗證返回URL

基本上,99%的網站由Access Level = Registered的文章組成。當您點擊其中一篇文章的URL時,Joomla會重定向到一個授權頁面。這是有道理的,除了原始文章的URL在登錄後丟失,您將被重定向回主頁,而不是最初打算的文章。

現在,我可以看到error.php頁面已被代碼修改爲攔截403錯誤,並且這看起來應該起作用。但是,不知何故/ Joomla以某種方式重定向到auth頁面,並且沒有403被拋出。

所以我的問題是,Joomla如何執行重定向到auth頁面(一個自定義插件順便說一句),有什麼辦法讓Joomla反而拋出403錯誤,所以我可以使用已經編碼錯誤的邏輯。 PHP。

在此先感謝

PS是的Joomla 1.5.23和5.2.17 PHP

回答

0

一個403 error是在HTTP的水平。當用戶嘗試訪問他無權訪問的服務器的一部分時,會引發此問題。這些權限與Joomla權限完全不同。大多數情況下,403錯誤只來自.htaccess文件的限制,或者腳本告訴服務器發出403錯誤(請參閱下面的代碼)。

我不是Joomla專家,但是當用戶轉到auth頁面時,您應該能夠引發403錯誤。這PHP代碼應該做的伎倆:

header("HTTP/1.0 403 Forbidden"); 

希望這可以幫助你。

1

Joomla! 1.5使用相當全面的.htaccess文件,並且Joel表示這發生在Joomla之前!看看。

一個標準的Joomla!如果相關組件寫入正確(如文章的標準com_content),則1.5用戶登錄後安裝將重定向到正確的內容。我首先看看爲什麼這不起作用,例如由於某種原因,的auth檢查已被修改。

Joomla! 1.5通常會通過將return參數(base64編碼)附加到用於調用com_user的URL來實現此目的,您可以在大多數組件中找到這樣的代碼來檢查用戶是否有權訪問並且是否重定向它們。

if (($contact->access > $user->get('aid', 0)) || ($contact->category_access > $user->get('aid', 0))) { 
    $uri  = JFactory::getURI(); 
    $return  = $uri->toString(); 

    $url = 'index.php?option=com_user&view=login'; 
    $url .= '&return='.base64_encode($return); 

    $mainframe->redirect($url, JText::_('You must login first')); 
} 
+0

謝謝。我現在想出來了,最後很簡單。有一個自定義重定向模塊沒有正確配置。感謝您的答覆 –