2010-08-27 42 views
1

我在Windows 2008下運行的MOSS 2007中遇到了一個奇怪的錯誤。我創建了一個自定義的HTTP模塊,它觸發了應用程序的OnAuthenticate事件。它基本上創建了一個由另一個應用程序用來驗證用戶的自定義cookie,創建一個單一的登錄效果。在主頁面上調用HTTPModule但不在子頁面上

運行Win2K3的開發服務器下的一切都很順利。但是,在登臺服務器上發生了以下奇怪的事情:

a)該模塊似乎在基本頁面上觸發,即https://conn.test.com/Pages/Default.aspx,但是如果somone直接進入子頁面,如:https://conn.test.com/Operations/Pages/Operations%20Portal.aspx,似乎沒有開火。

b)該模塊被IE瀏覽器觸發,但不是Firefox或Chrome瀏覽器。兩者之間的唯一區別似乎是某個webpart加載並在IE中運行,但似乎無法在Chrome或FF中加載或運行。

有人可以幫助解釋這種行爲。 HTTPMOdule覆蓋應用程序的AuthenticateRequest事件。

回答

0

對不起這個想法。問題是OnAuthenticate的事件處理程序的Init方法使用底層ASP.NET用戶的特權,但主事件處理程序委託使用經過身份驗證的用戶的憑據。

我已經寫了一些代碼t登錄到事件日誌,顯然這需要更高級別的權限。這就是模塊代表正在觸發但沒有記錄的原因。

我的猜測是,主頁面上的webpart運行着一些其他用戶的特權,他們擁有必要的訪問權限,因此在那裏工作。由於它在FF或Chrome中不起作用,因此該模塊在這些瀏覽器中不起作用。此外,子頁面沒有webpart,因此直接進入它們,也導致問題。

在我在日誌代碼周圍添加SPSecurity.runWithElevatedPriviliges後,問題得到了排序。

相關問題