我正在寻找有关使用 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
如果对于每个请求,IIS 允许访问SiteA-Root/subfolder/SiteB-Root
- 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
任何建议,将不胜感激。谢谢。