2011-06-24 48 views
2

我在Drupal 7安裝中獲得重定向循環。每當非管理員用戶登錄時,該站點將在用戶配置文件URL上輸入重定向循環;例如,http://example.com/?q=user/testuser非管理員登錄時重定向循環

該URL可以在超級用戶帳戶沒有問題的情況下訪問,並且在註銷時嘗試訪問此URL會按預期返回403拒絕訪問。

以非管理員用戶身份登錄時,嘗試訪問任何URL都將重定向到用戶配置文件頁面,該頁面將重定向到自身,從而導致重定向循環重新啓動。

我發現如果我給予特定用戶「管理員」角色,該用戶將停止重定向循環,並且該頁面將不再嘗試在登錄時重定向到用戶/%用戶名。

我還發現,如果我向用戶提供「管理用戶」權限,重定向循環將會停止,但仍會在登錄時將用戶重定向到用戶/%用戶名。

很明顯,這些解決方案都不可行,因爲爲普通用戶提供管理員角色或管理用戶的能力是一項巨大的安全風險。

有沒有人知道這個問題的解決方法,或者一種方法來解決這個與用戶角色相關的覆蓋?

已安裝模塊Block,Color,Comment,Contextual links,Dashboard,Database logging,Field,Field SQL storage,Field UI,File,Filter,Help,Image,List,Menu, Path,RDF,Search,Shortcut,System,Taxonomy,Text,Toolbar,Update manager,User,Chaos tools(7.x-1.0-alpha4),Page manager,Devel,Theme Developer,Fieldgroup,IMCE,Pathauto,Token,Taxonomy菜單,IMCE Wysiwyg API橋樑,Wysiwyg,Webform和i)提供的幾個自定義模塊2)提供自定義頁面和3)修改默認搜索行爲(按節點類型分割搜索結果)。我的自定義模塊都不會與用戶管理系統,權限系統或使用用戶模塊提供的任何功能進行交互。

+0

更新:我也在使用自定義主題。如果我切換到Drupal 7附帶的「Stark 7.2」主題,問題就會消失。這是否意味着我的問題存在於我的自定義主題圖層中? – NJH

回答

3

我有一個相同的問題......因爲我並不是唯一一個遇到這個問題的人,所以我多挖了一點。這是你的最新消息 - 自定義主題。

我相信這可能是由很多不同的因素造成的,但在我的情況和潛在的你的情況下,這是我的template.php錯誤。

我正在使用自定義MYTHEME_preprocess_page()在我的模板中提供一些自定義變量。其中一個變量顯然有點時髦,因爲當我刪除它時,問題消失了。原來,當我試圖將用戶註冊表單放入頁面時,有些代碼遺留下來。它從來沒有工作,我忘了把它刪除!

希望這可以幫助那裏的人回到正軌。

2

我還沒有解決,但你可以在下一個方面進行調查:
1.轉到http://SITE/admin/config/development/devel爲devel模塊設置。
2.選中「顯示重定向頁面」並保存設置。
3.轉到http://SITE/admin/people/permissions
4.檢查anon和其他角色的「Access developer information」,並保存。
5.嘗試登錄時,應停止重定向頁面並顯示它嘗試重定向的位置,以便您可以檢測到哪些模塊調用循環。

1

我對於非管理員用戶隨機出現的重定向循環也有問題。看着/admin/reports/dblog顯示了幾個節點的權限問題。我通過刷新節點權限來修復它(請參閱/admin/reports/status/rebuild)。現在一切都很好。

1

我同樣的問題,下班後和調試和論壇/博客導航我終於找到發生了什麼事情在我的網站的時間...

如果強制登錄區塊中的所有頁面,即使用戶已經登錄後,只有管理員可以瀏覽頁面。

這是可能的原因之一,我希望可以幫助別人!

1

我有同樣的問題,因爲即使用戶登錄時我也加載了登錄表單。只有在用戶是匿名用戶時才通過不要求表單來修復它。

0

https://www.drupal.org/node/1793230

運行在你的MySQL數據庫這些SQL查詢。如果你安裝了drush,你可以從你的設置目錄中「drush sqlc」進入MySQL命令行。否則,你可以使用phpMyAdmin,MySQL的工作臺,或一些其他的客戶端工具連接並運行這些:

顯示記錄被刪除:

SELECT r.rid, r.language, r.source, r.redirect FROM redirect r INNER JOIN url_alias u ON r.source = u.alias AND r.redirect = u.source AND r.language = u.language; 

然後,刪除在上面的查詢中顯示重定向 - 儘量去該行顯示的頁面。很可能你會得到一個重定向循環。然後,在備份數據庫並運行下面的刪除之後再試一次。你必須關閉保護模式下的MySQL工作臺來運行它,那麼備份:

DELETE r FROM redirect r INNER JOIN url_alias u ON r.source = u.alias AND r.redirect = u.source AND r.language = u.language; 

固定我的問題,並發現了,我甚至沒有意識到循環其他頁面!

相關問題