接着聊数据接口的登陆态校验,必须用cookie怎么办

上一次(聊一聊数据接口的登陆态校验以及JWT)说到app、小程序的数据接口通常采用token来作登陆信息校验,由于用不了cookie。可是实际应用的时候若是由于某些缘由必需要用cookie该怎么办了?web

案例

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

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

解决方案

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

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

$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);
相关文章
相关标签/搜索