我有一个带有Windows身份验证模式且启用了匿名访问的asp.net Intranet Web应用程序。在我的web.config中,我为“安全”子文件夹设置了以下内容:
<location path="Secure">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
问题是如果我直接点击Secure文件夹中的某个页面,我就会正确验证或质疑我的凭据。但是,我这样做的方法是使用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; });
除了load()状态为200之外,这一切都正常工作,因此返回静态内容并且load方法认为一切正常。
任何人都知道如何配置我的应用程序以正确检查load()上的身份验证而不返回任何内容,或者是否有其他更好的JQuery方法?由于Intranet的限制,我不想将'Secure'子文件夹设置为具有自己的web.config的虚拟目录(尽管此方法可行)。
令人困惑的是,如果我必须详细说明任何事情,请告诉我。谢谢你的帮助。
答案 0 :(得分:0)
我最终通过将整个安全文件的内容包装在ID为“SecureContentWrapper”且设置为runat =“server”的div中来管理此操作。然后在安全页面的代码隐藏中,我针对允许的用户检查System.Web.HttpContext.Current.User.Identity.Name,如果该人没有访问权限,我会将SecureContentWrapper div的InnerText覆盖为权限警告。它完成了工作并完美地使用了JQuery UI对话框。