QNetworkAccessManager 发出
authenticationRequired (QNetworkReply*, QAuthenticator*)
需要验证时发出信号。这可用于基本身份验证。
但是如何让 Qt 程序与服务器进行 NTLM 身份验证?我在任何地方都找不到这方面的例子。
我不能让它在 Qt 4.8 上工作,但在 Qt 5.1 上它有点工作。QAuthenticator 在这种情况下工作得非常糟糕。如果要在处理 authenticationRequired 信号的槽中手动设置用户名和密码:
onAuthenticationRequired (QNetworkReply*, QAuthenticator* auth)
{
auth->setUser("username");
auth->setPassword("password");
}
但是,如果要使用当前 Windows 用户登录,则需要将用户名设置为空字符串:
onAuthenticationRequired (QNetworkReply*, QAuthenticator* auth)
{
auth->setUser("");
}
注意:即使授予 Windows 用户访问权限,此插槽也会被调用 4 次。如果用户应该提供凭据,这尤其令人沮丧。此外,QAuthenticator 不提供任何公共方法来确定实际使用的身份验证方法。