c++ - Qt : Accessing Secure Objects using session-id from a server

标签 c++ spring qt curl

我正在开发一个 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::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 对象来请求 protected 文件。

关于c++ - Qt : Accessing Secure Objects using session-id from a server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29652267/

相关文章:

spring - @Autowired 依赖项的 @Mock 导致随机 junit 测试失败

java - spring boot (webflux) rest Controller 获取远程 IP 地址

qt - PyQt:keyPressEvent 和 keyReleaseEvent - 按住不反弹

multithreading - 关于QThread的问题

c++ - Clang 与 Clang tidy 是否检测到相同的警告和错误?

c++ - 与库的 c 绑定(bind)链接

c++ - 无法使用 boost::python 更改传递给 python 函数的对象

java - 如何使用 @Assisted 将 bean "with additional parameters"从 Guice 迁移到 Spring?

qt - 如何将 mousePressEvent() 传播到一组 QGraphicsItem?

c++ - 使用 QFileDialog 后程序在几秒钟后崩溃