1

QNetworkAccessManager 发出

authenticationRequired (QNetworkReply*, QAuthenticator*)

需要验证时发出信号。这可用于基本身份验证。

但是如何让 Qt 程序与服务器进行 NTLM 身份验证?我在任何地方都找不到这方面的例子。

4

1 回答 1

3

我不能让它在 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 不提供任何公共方法来确定实际使用的身份验证方法。

于 2013-07-25T12:36:28.587 回答