asp.net – 将Windows身份验证重定向到自定义401页面
我们正在转换一些以前在表单身份验证下运行的Web应用程序,现在作为
Windows身份验证运行.我想重新创建表单身份验证的页面安全性,只需对实际页面进行最少的修改.我能够使用简化的Web应用程序重新创建我想要的效果.我在Server 2008 R2集成管道IIS 7.5上运行应用程序.
我使用Windows身份验证创建了一个简单的3页应用程序这三页是: > Openpage.aspx,对任何经过身份验证的用户开放 该应用的Web.Config: <configuration> <system.web> <compilation debug="true" targetFramework="4.0" /> <authentication mode="Windows"/> <authorization> <deny users="?" /> <allow users="*" /> </authorization> </system.web> <location path="blockedpage.aspx"> <system.web> <authorization> <deny users="*"/> </authorization> </system.web> </location> <system.webServer> <httpErrors errorMode="Custom" > <remove statusCode="401" subStatusCode="-1" /> <error statusCode="401" path="/development/simplesecurityapp/errorpage.aspx" responseMode="ExecuteURL" /> </httpErrors> <validation validateIntegratedModeConfiguration="false" /> <defaultDocument> <files> <clear /> <add value="openpage.aspx" /> </files> </defaultDocument> </system.webServer> </configuration> (如果我不尝试在asp.net级别重定向401错误,我只是得到标准的“未授权消息”,这不是我想给用户的效果.) 但是,我收到一个我不明白的错误 – 每次服务器重置时,应用程序都会停止工作. IIS只返回401错误,直到浏览器弹出手动登录控件,这是无法满足的. (我从不希望我的用户看到浏览器登录提示) 但是,如果我在设置应用程序后(通过编辑Web配置或使用服务器GUI更新它)删除部分,访问页面,然后再添加部分,则替换httperrors部分,应用程序开始工作正如预期的那样,并一直持续到服务器重新启动,此时它开始再次为用户提供手动登录弹出窗口,这是他们无法解决的. 1)这是使用Windows身份验证来保护应用程序的正确方法吗?是否有更好的方法来配置像表单一样无法访问的目录,但仍提供自定义错误页面?) 2)这是集成管道的影响,为什么它以这种方式工作? 解决方法
您正尝试通过传输错误消息提供内容.
表单允许你这样做,因为它由第7层内容组成,如302s和200s. 401s被客户端浏览器解释为“服务器不喜欢我的凭据,所以提出一个对话框来询问新的”. 经过身份验证的页面至少会生成1 401个以进行身份??验证;你为其他东西重载“错误”可能是问题的根源. 我不确定是否有一种优雅的方式来做你想做的事. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- DxPackNet 3.音频捕捉(录音)
- asp.net-mvc-3 – ASP.NET MVC3的AntiForgeryToken有哪些实
- 冻结asp.net网格视图列
- asp.net-mvc – ASP.NET MVC与XSL
- asp.net-mvc-3 – 是否可能显示从ASP.NET MVC 3中的数据库的
- ASP.NET MVC输出缓存为多应用程序,因主机名和文化而异
- asp.net 删除项目文件/文件夹IIS重启,Session丢失问题
- asp.net – 在web.config中编码url
- asp.net-mvc – Umbraco 4.11.3 – 控制器类型的当前请求不
- asp.net – 为什么我的函数在加载UpdatePanel后运行多次