前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Qt开源网络库[12]-身份验证

Qt开源网络库[12]-身份验证

作者头像
Qt君
发布2023-03-17 15:16:49
9050
发布2023-03-17 15:16:49
举报
文章被收录于专栏:跟Qt君学编程跟Qt君学编程

主要更新内容:添加了身份验证的支持。

  当带有身份验证的请求时,我们需要填写用户名和密码等信息,但QNetworkAccessManager操作略显繁琐,所以特意封装了一下,简化用户操作。并在此基础上添加自动填写用户信息验证次数限制错误处理等功能。

1. 接口:

  1. 自动填写身份验证信息。注:当QNetworkAccessManager的authenticationRequired信号触发时,会自动往QAuthenticator填写用户名和密码信息。
代码语言:javascript
复制
HttpRequest &autoAuthenticationRequired(const QAuthenticator &authenticator);
HttpRequest &autoAuthenticationRequired(const QString &user, const QString &password);
  1. 通过回调/槽函数手动填写身份验证信息。
代码语言:javascript
复制
inline HttpRequest &onAuthenticationRequired(const QObject *receiver, const char *method);
inline HttpRequest &onAuthenticationRequired(std::function<void (QAuthenticator *)> lambda);
  1. 设置限制身份验证的次数,超过身份验证计数则触发失败并中断请求。

变量

解释

count < 0

不限制验证次数

count = 0

不验证

count = 1

限制验证1次(默认值)

count > 0

限制count次

代码语言:javascript
复制
inline HttpRequest &authenticationRequiredCount(int count = 1);
  1. 身份验证失败后错误回调。
代码语言:javascript
复制
inline HttpRequest &onAuthenticationRequireFailed(const QObject *receiver, const char *method);
inline HttpRequest &onAuthenticationRequireFailed(std::function<void ()> lambda);
inline HttpRequest &onAuthenticationRequireFailed(std::function<void (QNetworkReply *)> lambda);

2. 例子

  1. 身份验证
代码语言:javascript
复制
client.get("https://httpbin.org/basic-auth/admin/123456")
      .onAuthenticationRequired([](QAuthenticator *authenticator) {
            authenticator->setUser("admin");
            authenticator->setPassword("123456");
            qDebug() << "=============";
        })
      .onSuccess([](QString result){qDebug()<<"success: "<<result;})
      .onFailed([](QString err){qDebug()<<"failed: "<<err;})
      .exec();
  1. 身份自动验证
代码语言:javascript
复制
client.get("https://httpbin.org/basic-auth/admin/123456")
      .autoAuthenticationRequired("admin", "123456")
      .onSuccess([](QString result){qDebug()<<"success: "<<result;})
      .onFailed([](QString err){qDebug()<<"failed: "<<err;})
      .exec();
  1. 身份验证次数与错误处理
代码语言:javascript
复制
client.get("https://httpbin.org/basic-auth/admin/123456")
      .authenticationRequiredCount(2) // 最大重试验证次数为2次(默认值为1次)
      .onAuthenticationRequired([](QAuthenticator *authenticator) {
            authenticator->setUser("admin");
            authenticator->setPassword("1234563"); // 错误输入
        })
      .onAuthenticationRequireFailed([](){ // 验证身份失败的回调
            qDebug() << "authentication failed!";
        })
      .onSuccess([](QString result){qDebug()<<"success: "<<result;})
      .onFailed([](QString err){qDebug()<<"failed: "<<err;})
      .exec();

3. 注意

  • autoAuthenticationRequiredonAuthenticationRequired不能同时使用,因为它们是互斥实现。如不慎同时使用,只会生效autoAuthenticationRequired操作。

4. 代码地址:

https://github.com/aeagean/QtNetworkService

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Qt君 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 接口:
  • 2. 例子
  • 3. 注意
  • 4. 代码地址:
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档