评论

【接口相关】接着聊数据接口的登录态校验,必须用cookie怎么办

小程序的数据接口一般采用token来做登录信息校验,因为用不了cookie。但是实际应用的时候如果因为某些原因必须要用cookie该怎么办了?

上一次(【接口相关】聊一聊数据接口的登录态校验以及JWT)说到app、小程序的数据接口一般采用token来做登录信息校验,因为用不了cookie。但是实际应用的时候如果因为某些原因必须要用cookie该怎么办了?

案例

说一下我的实际案例吧,我做过的一个小程序,背景是这个项目已经有web端,希望能有个小程序把web功能复制一遍,但是后端这边已经交付,没有人再继续维护,所以需求是在不修改后端的基础上把小程序做出来。我看了一下现有的web端,有好有坏,好的就是web端数据操作都是通过ajax调用接口来完成的,接口都是现成的;但是坏的就是数据接口和web页面在同一个域名下,由于没有跨域问题,所以用户登录状态的校验用的是cookie。

这就麻烦了,我前面说过了,小程序里面是用不了cookie的。当时就这个问题和客户也做了沟通,得到的答复就是后端已经没人再搞了,数据库也不开放给你,你自己想办法。

解决方案

不过还好,我可是会PHP的小程序开发者。我这边最终给出的方案是用PHP搭一个中间环境,模拟cookie从原来的后端接口操作数据后再转换成token形式传给小程序使用。

PHP中模拟cookie读取接口需要通过curl的相关配置来实现,基本原理是在PHP服务器端设置一个静态文件存储cookie信息,直接看代码吧

$ch=curl_init();
// 一些基本的配置
curl_setopt($ch, CURLOPT_POST, TRUE);
...

// 模拟cookie的相关配置
$cookie_file='cookie.txt'; // 服务器上存储cookie的文件
if(file_exists($cookie_file))curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);

// 读取接口
$response=curl_exec($ch);
curl_close($ch);
点赞 11
收藏
评论

5 个评论

  • 子不语
    子不语
    2019-12-16

    先点后看,已成习惯

    2019-12-16
    赞同 1
    回复
  • Mr.Zhao
    Mr.Zhao
    2019-12-16
    binnie smile
    2019-12-16
    赞同 1
    回复
  • 拾忆
    拾忆
    2019-12-16

    先赞后看

    2019-12-16
    赞同 1
    回复
  • 2019-12-16

    点赞!先赞再看!

    2019-12-16
    赞同 1
    回复
  • 竹林风
    竹林风
    2019-12-18

    收到和后台的设置Cookie请求就把内容存到本地,然后在wx.rewquest中配置

    header:{
      Cookie:缓存内容

    不就完事了嘛

    2019-12-18
    赞同
    回复 1
    • 赖Gary
      赖Gary
      2020-01-06
      如何获取COOKIE
      2020-01-06
      回复
登录 后发表内容