我正在开发一个 Qt 应用程序,我想在其中检索在基于 Spring-MVC 的 Web 应用程序中标记为 @Secured 的对象。我已经在服务器端编写了用于 REST 身份验证的代码,如果我使用“curl”工具,那么我就能够访问服务器上的安全服务。我想知道是否可以复制我在 QT 应用程序中访问安全服务的方式。你能帮忙的话,我会很高兴。多谢。
curl 代码:
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 专家,所以请耐心等待。多谢。
最佳答案
将我的评论转换成这个答案:
从您的 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
对象来请求 protected 文件。
关于c++ - Qt : Accessing Secure Objects using session-id from a server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29652267/