我正在开发一个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的专家,所以请耐心等待。非常感谢。
答案 0 :(得分:2)
将我的评论转换为这个答案:
从你的curl命令来看,你可能只需要发送一个POST请求并使用Qt处理cookie。 Qt提供了完成此任务所需的一切,请查看QNetworkAccessManager::post和QNetworkAccessManager::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
对象来请求受保护的文件。