zoukankan      html  css  js  c++  java
  • QNetworkRequest加Authorization头,适应Rest风格的API

      Rest是无状态的。Rest的请求之间不应该有依赖,在调用一个请求前,不需要一定要去提前调用另外一个请求。Rest里面不应该有 session,特别是Rest请求不应该保存信息在sesssion里,以便在后面的调用中使用。甚至包括安全验证,客户端不应该需要提前登录,然后把 权限信息保存在session里,后面的请求用同一个session来调用。

    实现无状态的方法就是,把所有信息都包含在当前的请求中,包括验证信息。HTTP是无状态的,HTTP里有一个Authorization 头,HTTP的要求是在每次请求的时候都把验证信息放在里面,服务器每次处理请求前都去验证这个信息。为了安全,我们可以提供一个生成token的 Rest API,客户端调用这个API生成token(可以附上用户名/密码来生成token)。在后面的所有请求中都把这个token放在 Authentication头中。

      

    如下代码就是实现QNetworkRequest加Authorization头

       QString _url;//url

       QString _token;//token

     //

        QNetworkRequest mreq;
        QNetworkAccessManager *tnam = new QNetworkAccessManager();

        QEventLoop loop;
        QObject::connect(tnam, SIGNAL(finished(QNetworkReply *)), &loop, SLOT(quit()));
        mreq.setUrl(QUrl(_url));
        mreq.setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded");
        //
        QString token_headerData = "Token  " + _token;
        mreq.setRawHeader("Authorization", token_headerData.toLocal8Bit());
        //
        QNetworkReply* reply=tnam->get(mreq);
        loop.exec();
        QByteArray data=reply->readAll();

     ...

  • 相关阅读:
    Quartus II -----破解
    博客诞生
    OpenMPI 学习笔记(一)并行计算机和分布式计算
    信息安全(1):安全策略
    认证
    SSL/TLS 和Https
    IPSec 网络协议安全
    C# 快速高效率复制对象另一种方式 表达式树
    C语言学习指针和数组2
    C语言学习二维数组
  • 原文地址:https://www.cnblogs.com/falqs/p/3795444.html
Copyright © 2011-2022 走看看