2014-03-01 36 views
0

我有一個asp.net intranet web應用程序與Windows身份驗證模式和匿名訪問啓用。在我的web.config我有一個「安全」子文件夾下面的一組:ASP.NET的 - jquery load()不尊重web.config授權

<location path="Secure"> 
<system.web> 
    <authorization> 
    <deny users="?" /> 
    </authorization> 
</system.web> 

的問題是,如果我打了一個頁面在安全的文件夾直接我正確驗證或質疑爲我的憑據。然而,我這樣做的方式是使用JQuery對話框從Secure文件夾加載()頁面。 Secure文件夾中的分頁代碼不會執行(這是正確的),但是任何靜態內容都會以200狀態代碼發送。這裏的JS代碼:

$('#MyDivID_link').live('click', function (event) { 
editDialog.load("Secure/MyEditPage.aspx", function (response, status, xhr) { 
    if (status == "error") { 
    $("#MyDivID_Win").html("You are not authorized to use this application or your web browser is not supported.<br><br>Please use Internet Explorer to edit content."); 
    } else { 
    $("#btnSubmit").show(); 
    } 
}).dialog('open'); 
return false; }); 

這一切工作正常,除了事實的負載()狀態爲200,所以返回靜態內容和負載方法認爲一切都很好。

任何人都知道我可以配置我的應用程序正確檢查負載()上的身份驗證,並不返回任何東西或是否有另一種更好的JQuery方法?由於Intranet限制,我不想將「安全」子文件夾設置爲具有自己的web.config的虛擬目錄(儘管此方法可行)。

有點混淆,所以讓我知道是否需要詳細說明任何事情。謝謝你的幫助。

+1

它與jQuery無關,它看起來像一個服務器配置問題 –

+0

謝謝Arun,我同意它不是一個JQuery問題。它幾乎聽起來像一個IIS/.NET錯誤,因爲這會讓人們看到他們的應用程序配置爲不顯示匿名的一些內容。 – thekonger

回答

0

我最終通過將整個安全文件的內容封裝在ID爲'SecureContentWrapper'的div中並設置爲runat =「server」來完成管理。然後在安全頁面的代碼隱藏中,對照允許的用戶檢查System.Web.HttpContext.Current.User.Identity.Name,並且如果此人沒有訪問權限,我將SecureContentWrapper div的InnerText覆蓋爲許可的警告。它完成了工作,並完美地與JQuery UI對話框一起工作。