接着聊數據接口的登陸態校驗,必須用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);
相關文章
相關標籤/搜索