2012-08-31 46 views
5

以前,當我嘗試以非超級用戶帳戶(即作爲門戶特定用戶)對aax進行ajax調用時,我的web服務器將返回cookie來清除我的授權。 I posted a question about this,似乎答案是確保在我的GET參數中指定了portalid=xx爲什麼DotNetNuke將我登出來發佈ajax請求?

但是,我剛剛發現,如果我在POST請求中添加portalid=xx,DotNetNuke似乎忽略並註銷任何非超級用戶帳戶。

如何在DNN POST ajax請求期間保持授權?

回答

0

我發現了一些東西給你,看看他們是否有解決你的問題。

  • 確保您使用的是ScriptManagerProxy。這允許ascx頁面使用AJAX,而父頁面也使用AJAX。
  • 如果頁面狀態持久性設置爲「內存」,已經有許多人無法使用DNN運行AJAX的報告。那些遇到這種情況的人已經能夠通過將頁面狀態持久性切換到「頁面」來修復它。要做到這一點,最簡單的方法是運行此查詢:

    更新HostSettings 集SettingValue =「P」 其中SettingName =「PageStatePersister」

在運行,你會需要回收應用程序。如果您無法訪問服務器,只需在web.config文件中添加一個空格或回車符(這將強制應用程序回收)。

  • 最後,你可能會看到你是否在你的web.config中有這條線。有時,刪除它會幫助:

    <的System.Web > < xhtmlConformance模式= 「遺產」/ > </system.web>

+0

您有沒有機會查看這些可能的解決方案? – Joshua

+0

對不起,直到今天還沒有嘗試過。不幸的是,這些工作都沒有。我可能也應該說我沒有使用ASP.NET Ajax,但jQuery來執行我的帖子。 – KallDrexx

1

我覺得我對整個形勢良好的處理,不幸的是,似乎唯一真正的解決方案是確保每個子門戶網站都有自己的子域名而不是子網址(例如portal.domain.com而不是domain.com/portal)。

的問題是,當你的門戶0 domain.com但門戶網站1 domain.com/portal一切正常,直到你需要通過AJAX來訪問.ashx文件。然後會發生的是所請求的網址是domain.com/DesktopModules/MyModule/Handler.ashx,其中不包含/portal/,因此導致DNN認爲您在門戶網站0上發出請求並將您註銷。

儘管GET請求可以通過參數portal=1解決這個問題,但這似乎不適用於POST請求。

因此,看起來最好的解決方案是讓您的門戶網站位於不同的子域(portal.domain.com),然後您不會冒險丟失這樣的東西。

+0

這個答案可能在問題的正確範圍內。任何註銷通常由Url中模糊的門戶引用引起,這會導致請求錯誤地標識請求所屬的門戶。 準確理解註銷何時發生也很重要。有時它是進入頁面視圖的整個請求組中的一部分,但是看起來您已經註銷了POST-,實際上您已經註銷,並且接下來發生的請求並不重要,它總是會導致未經認證的響應。 –

相關問題