【发布时间】:2013-09-24 08:29:11
【问题描述】:
我正在寻找有关使用 IIS6、ASP.NET 网站(SiteA,FW 2.0)和具有静态内容的网站(SiteB)的访问限制的解决方案:
问题/前提条件:
- 经过 SiteA 身份验证的用户应该能够访问静态 SiteB 的内容
- 对 SiteB 的非身份验证访问应该是 重定向到 SiteA 的登录脚本
- 因为 SiteA 是遗留代码
不使用任何 ASP.NET 的身份验证机制。有一个
方法
IsAuthenticated() = true/false检查身份验证 SiteA 的状态。 - 我仍然可以将 SiteB 放置在任何地方(取决于 关于解决方案):可能在 SiteA 的目录结构或其他地方 在另一台服务器上
考虑的解决方案/如何工作:
-
SiteB 放置在 SiteA 目录结构中(例如
SiteA-Root/subfolder/SiteB-Root) - IIS 应该拦截对目录
SiteA-Root/subfolder/SiteB-Root的请求 - 如果
IsAuthenticated == true对SiteA-Root/subfolder/SiteB-Root的每个请求,IIS 允许访问 - IIS 重定向到 SiteA 的登录页面,否则
我已经尝试过的:
- 使用 IIS-UrlRewrite 并将对 SiteB 的任何请求重定向到保护脚本,例如
SiteA/Interceptor.aspx?referer=<Url of requested content of SiteB> -
Interceptor.aspx加载<Url of requested content of SiteB>如果IsAuthenticated() == true否则重定向到登录页面 -
Interceptor.aspx将加载的流写入它自己的响应 - 问题:
- 加载的 SiteB 页面中的任何相关链接都不再起作用 -> 需要解析 (?)
- 处理繁重,因为对 SiteB 的任何请求都由
Interceptor.aspx处理
任何建议将不胜感激。谢谢。
【问题讨论】:
-
如果静态内容是问题,请将其设置为 Web 应用程序中的虚拟目录。
标签: c# asp.net authorization iis-6