SOAP-Server C++/Delphi:如何清除以前的身份验证?

问题描述

我有一个 SOAP 服务器(使用 C++Builder 10.3 中的 WebServer Wizard 创建)。

我使用 HTTP 基本身份验证登录。我可以在 TIdHTTPWebbrokerBridge::OnParseAuthentication()TWebModule::WebModule1DefaultHandlerAction() 中查看和检查用户/密码,如下所示:

void __fastcall TForm1::OnParseAuthentication(TIdContext *AContext,const UnicodeString AAuthType,const UnicodeString AAuthData,UnicodeString& VUsername,UnicodeString& VPassword,bool& VHandled)
{
    String szZugangsdaten = TNetEncoding::Base64->Decode(AAuthData);

    System::DynamicArray<System::UnicodeString> array = ::SplitString(szZugangsdaten,":");

    if (array.Length == 2) {
        VUsername = array[0];
        VPassword = array[1];
        VHandled = bool(VUsername == "right_user" && VPassword == "right_pw");
    }
    else {
        VHandled = false;
    }
}

我的问题是,一旦客户端登录,即使我在浏览器中输入了错误用户/密码,旧的(“正确的”)访问数据总是会在响应中传输:

  1. 尝试:http://wrong_user:wrong_pw@myserver.com -> 无身份验证(OK)

  2. 尝试:http://richt_user:right_pw@myserver.com -> 身份验证(OK)

  3. 尝试:http://wrong_user:wrong_pw@myserver.com -> 身份验证 (!!!)

我怎样才能避免这种情况?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)