asp-classic网站的注销功能

时间:2009-10-06 17:48:52

标签: asp-classic https logout

有没有办法为使用经典asp的网站提供注销功能,并且使用Windows身份验证(即受限文件夹的权限是通过服务器操作系统设置的,用户名/密码存储在Active Directory中)?

如果它有任何区别,服务器正在运行IIS 5.0。注销需要至少适用于IE(6,7和8)和Firefox。

请注意,这是一个古老且相当大的网站 - 数百个单独的asp页面 - 因此任何涉及更改单个页面的解决方案都不起作用。 (出于同样的原因,以及基本的礼貌,请不要建议更改为asp.net。)

到目前为止,我发现发送401响应代码可能会导致某些浏览器清除身份验证,但(1)我不知道如何执行此操作,并且(2)我真的更喜欢实际工作的东西,而不仅仅是有机会工作。我也知道,摆弄Session对象(例如.Abandon)将完全没有意义,因为这不是身份验证的地方。

1 个答案:

答案 0 :(得分:2)

您对“退出”一词的使用令人困惑。通常它是站点管理登录/退出的可靠性,这通常是使用会话对象完成的,但这不是你所说的。

我认为你可能会谈论两件可能的事情。

连接验证

首先,Windows集成安全性所做类型的身份验证是在连接级别执行的。一旦连接经过身份验证,就可以使用连接(默认情况下,在HTTP / 1.1下保持打开状态),不再需要进行身份验证握手。

有可能通过在响应中包含Connection: close标头来说服客户端或服务器关闭连接,但这实际上可能不会导致连接被关闭。

此外,客户端可能一次打开2个或更多经过身份验证的连接。在这种情况下,上述方法只能关闭其中一个。

这里的结论是,您无法对每个会话级别的身份验证连接做些什么。

凭据缓存

IE将在IE会话期间缓存用户为网络登录输入的凭据到特定站点。因此,即使您设法关闭现有的经过身份验证的连接,IE也只是重新使用缓存的凭据来静默完成任何后续身份验证握手。可能可以将客户端配置为不执行此操作,但我怀疑这是您可以使用的。

<强>结论

答案(至少我认为你问的问题)是:不,你不能。