问题描述
我有一个 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;
}
}
我的问题是,一旦客户端登录,即使我在浏览器中输入了错误的用户/密码,旧的(“正确的”)访问数据总是会在响应中传输:
-
尝试:http://wrong_user:wrong_pw@myserver.com -> 无身份验证(OK)
-
尝试:http://richt_user:right_pw@myserver.com -> 身份验证(OK)
-
尝试:http://wrong_user:wrong_pw@myserver.com -> 身份验证 (!!!)
我怎样才能避免这种情况?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)