gpt4 book ai didi

vba - 如何告诉 Excel/VBA 清除安全凭证?

转载 作者:行者123 更新时间:2023-12-02 19:11:38 25 4
gpt4 key购买 nike

我为 Excel 编写了一个 VBA 插件,它为服务器提供登录/注销功能。

我实现它的方法是向服务器上的 URL 发送请求,该 URL 检查用户是否有 session ,如果没有,服务器会在 header 响应上发送 401(未经授权)。 401 响应使 Excel 自动弹出“Windows 样式”登录模式(我猜这是 Excel 中免费提供的)。我输入我的凭据,服务器对用户进行身份验证,并创建一个 session 。

我现在的问题是当我尝试注销时。服务器按预期销毁 session 。如果用户现在再次单击“登录”,Excel 会向服务器发送 HEAD 请求,服务器以 401 响应,然后 Excel 自动发送用户之前输入的相同用户名和密码凭据。用户现在已再次登录。需要明确的是 - 这不是服务器端缓存,而是 Excel 在收到 401 响应后使用 HTTP header 中的基本身份验证重新发送登录凭据。

这不是预期的行为,我不希望 Excel 存储凭据的副本并一次又一次地重复使用它们。如果用户注销,我希望这是永久性的,直到他们决定再次登录,此时他们应该重新输入凭据。

我遇到的问题是告诉 Excel/Windows/VBA?清除它所保留的任何内容,无论它保留在何处。我的问题是,我真的不知道 Excel/VBA 方面的编排是什么,它的功能似乎是免费的,所以我不知道它存储在哪里。

不管怎样,这是我的 VBA

 Dim req As MSXML2.XMLHTTP60
Set req = New MSXML2.XMLHTTP60
req.Open "GET", url, False
req.send

最佳答案

来自this answer :

myURL = "http://my.domain.com/myscript.cgi"
Dim oHttp As New MSXML2.XMLHTTP
oHttp.Open "POST", myURL, False
oHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded'"
oHttp.setRequestHeader(“Cache-Control”, “no-cache”);
oHttp.setRequestHeader(“Pragma”, “no-cache”);
oHttp.setRequestHeader(“If-Modified-Since”, “Sat, 1 Jan 2000 00:00:00 GMT”);
oHttp.setRequestHeader "Authorization","Basic " & Base64EncodedUsernamePassword
oHttp.send "PostArg1=PostArg1Value"
Result = oHttp.responseText

关于vba - 如何告诉 Excel/VBA 清除安全凭证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32222192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com