• 2773阅读
  • 2回复

[提问]QT NTLM认证登录问题---关于域用户 [复制链接]

上一主题 下一主题
离线draeag
 

只看楼主 倒序阅读 楼主  发表于: 2016-07-04

QNetworkAccessManager* m_pNetworkManager = new QNetworkAccessManager(this);
connect(m_pNetworkManager, SIGNAL(authenticationRequired(QNetworkReply*, QAuthenticator*)),
        SLOT(slot_authenticationRequired(QNetworkReply*, QAuthenticator*)));

m_pNetworkReply = m_pNetworkManager->post(netRequest,contentByteArray);//发起post请求

void Httpxxx::slot_authenticationRequired(QNetworkReply *reply, QAuthenticator *auth)
{
    auth->setUser(m_strUserName);
    auth->setPassword(m_strPassWord);
}

非域用户的情况下在发送post请求后,会调用slot_authenticationRequired,为什么域用户的情况下就不再调用了,而是直接用当前登录的域用户进行了验证,想用自己设置的其它用户登录应该如何设置?
官方文档有这么一句话,但不知道如何处理?

在QAuthenticator的说明中:
NTLM version 2

The NTLM authentication mechanism currently supports no incoming or outgoing options.On Windows, if no user has been set,domain\user credentials will be searched for on the local system to enable Single-Sign-On functionality.

这个no user has been set ,如何 进行set ?
离线stlcours

只看该作者 1楼 发表于: 2016-07-06
天天用QNetworkAccessManager,却从未仔细看过它的使用,原来还有QAuthenticator,还能处理NTLM,真是酷。

看了一下文档,
也许是需要调用setCookieJar QNetworkCookie的setDomain函数
或者需要调用setCache QAbstractNetworkCache的remove函数

你试试,有了结果上来说一声~
离线stlcours

只看该作者 2楼 发表于: 2016-07-06
另外文档里还提到: One QNetworkAccessManager should be enough for the whole Qt application.

如果你在别处先创建了一个QNetworkAccessManager ,那么也许就会有问题
快速回复
限100 字节
 
上一个 下一个