Qt:使用来自服务器的session-id访问安全对象

时间:2015-04-15 13:57:45

标签: c++ spring qt curl

我正在开发一个Qt应用程序,我希望在基于Spring-MVC的Web应用程序中检索标记为@Secured的对象。我已经在服务器端编写了用于REST身份验证的代码,如果我使用'curl'工具,那么我就能够访问服务器上的安全服务。我想知道无论如何我都可以复制我在QT应用程序中访问安全服务的方式。你能帮忙的话,我会很高兴。非常感谢。

curl code:

curl -i -X POST -d j_username=email@email.de -d j_password=password -c /home/username/cookies.txt http://localhost:8080/j_spring_security_check 

为了使用session-id访问安全服务,我这样做:

curl -i --header "Accept:application/json" -X GET -b /home/cookies.txt http://localhost:8080/secure_service_method

如何在QT中实现同样的目标。你能帮忙的话,我会很高兴。请注意,我不是Qt的专家,所以请耐心等待。非常感谢。

1 个答案:

答案 0 :(得分:2)

将我的评论转换为这个答案:

从你的curl命令来看,你可能只需要发送一个POST请求并使用Qt处理cookie。 Qt提供了完成此任务所需的一切,请查看QNetworkAccessManager::postQNetworkAccessManager::setCookieJar

您需要实施的基本步骤如下:

1。)设置:

QNetworkAccessManager* manager = new QNetworkAccessManager(this);
manager->setCookieJar(new QNetworkCookieJar(manager));
connect(manager,SIGNAL(finished(QNetworkReply*)),this,SLOT(replyFinished(QNetworkReply*)));

2。)请求cookie

QNetworkRequest request;
request.setUrl(QUrl("http://localhost:8080/j_spring_security_check"));
QByteArray postData;
postData.append("j_username=email@email.de&j_password=password");
manager->post(request,postData);

3。)使用具有cookie的manager对象来请求受保护的文件。