Asp classic asp经典网站的注销功能

Asp classic asp经典网站的注销功能,asp-classic,https,logout,Asp Classic,Https,Logout,有没有办法为使用经典asp和Windows身份验证的站点提供注销功能(即受限文件夹通过服务器操作系统设置权限,用户名/密码存储在Active Directory中) 如果有任何区别,服务器正在运行IIS 5.0。注销至少需要适用于IE(6、7和8)和Firefox 请注意,这是一个旧的相当大的站点—有数百个单独的asp页面—因此任何涉及更改单独页面的解决方案都无法工作。(出于同样的原因,以及基本的礼貌,请不要建议改为asp.net。) 到目前为止,我发现发送401响应代码可能会导致某些浏览器清除

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

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

请注意,这是一个旧的相当大的站点—有数百个单独的asp页面—因此任何涉及更改单独页面的解决方案都无法工作。(出于同样的原因,以及基本的礼貌,请不要建议改为asp.net。)

到目前为止,我发现发送401响应代码可能会导致某些浏览器清除身份验证,但是(1)我不知道如何做到这一点,(2)我真的更喜欢实际工作的东西,而不是仅仅有一个不太可能工作的东西。我还知道,摆弄会话对象(.about,例如)将毫无意义,因为身份验证不是在这里进行的。

您使用的术语“注销”令人困惑。通常,站点有责任管理登录/注销,这通常是使用会话对象来完成的,但这不是您所说的

我察觉到你可能在谈论两件事

连接验证

首先,由Windows integrated security完成的类型验证是在连接级别执行的。一旦对连接进行了身份验证,就可以使用该连接(根据HTTP/1.1,该连接默认保持在开放状态),而无需进一步进行身份验证握手

通过在响应中包含
连接:close
头,可以说服客户机或服务器关闭连接,但这实际上可能不会导致连接关闭

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

这里的结论是,对于每个会话级别的经过身份验证的连接,您几乎无能为力

凭证缓存

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

结论


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

我不知道为什么我不清楚我想要什么:如果用户可以登录到某个网站,他们应该可以从该网站注销,不是吗?只有这样似乎不起作用,至少如果您使用https并让服务器上的Windows操作系统负责登录过程(即从用户处获取用户名和密码,并对照列表进行检查,在本例中是在Active Directory中)。哦,还有“一次打开2个或更多经过身份验证的连接”这正是我们想要实现的,但非IE浏览器无法实现。IE6和IE7,如果您打开一个新的浏览器窗口,它将处于自己的会话中,您可以作为其他用户登录。IE8,您必须使用文件菜单上的newsession命令来实现相同的功能。然而,在Firefox和Opera中,这是根本不可能实现的。@Martha:您混淆了连接身份验证与站点登录以及与浏览器进程实例的连接。通过启动
iexplore.exe
,可以启动IE6和IE7的新实例。要启动firefox的新实例,请使用
firefox.exe-no remote-p
。我可以向您保证,我的任何用户都不会通过命令行启动浏览器窗口。我并没有混淆任何东西:我们的网站使用Windows身份验证进行登录。与中一样,用户打开我们的主页(不需要登录),单击“登录”链接,在弹出窗口中输入用户名和密码(由服务器操作系统提供,即它不是html或asp页面),然后允许他们进入站点的相应部分。不管你怎么说,这是一个登录操作,因此常识认为应该有一个相应的注销。@Martha:Hmm。。我试图帮助你,但如果你想坚持从用户的角度而不是从开发者的角度来看术语,我们将继续努力沟通。不管您觉得如何,该网络对话框都在验证连接(客户端和服务器之间的TCP/IP管道),以便服务器代码可以使用用户标识运行。尽管出现了“登录网站”的情况,但事实并非如此。