• 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();

     ...

  • 相关阅读:
    【leetcode】525. Contiguous Array
    【leetcode】827. Making A Large Island
    【leetcode】540. Single Element in a Sorted Array
    【leetcode】45. Jump Game II
    2017.11.2 Talk to customers for an hour
    New Concept English three (29)
    New Concept English three (28)
    2017.10.31 Enginer+position+statement
    New Concept English three (27)
    2017.10.30 Epicor -ERP
  • 原文地址:https://www.cnblogs.com/falqs/p/3795444.html
Copyright © 2020-2023  润新知