首頁 >後端開發 >PHP問題 >php如何帶著token請求接口

php如何帶著token請求接口

(*-*)浩
(*-*)浩原創
2019-09-30 14:28:504315瀏覽

php如何帶著token請求接口

PHP Token(令牌)

token的意思是“令牌”,是服務端產生的一串字串,作為客戶端進行請求的一個識別。

針對以上特點,行動端與服務端的通訊就需要2把鑰匙,也就是2個token。 (推薦學習:PHP影片教學

第一個token是針對介面的(api_token);

第二個token是針對使用者的(user_token);

先說第一個token(api_token)

它的職責是維持介面存取的隱藏性和有效性,並保證介面只能給自家人用,怎麼做到?

參考想法如下:

按伺服器端和客戶端都擁有的共同屬性產生一個隨機字串,客戶端產生這個串,伺服器也按同樣演算法生成一個串,用來校驗客戶端的串。

現在的介面基本上是mvc模式,URL基本上是restful風格,URL大體格式如下:

http://blog.snsgou.com/模块名/控制器名/方法名?参数名1=参数值1&参数名2=参数值2&参数名3=参数值3

介面token產生規則參考如下:

api_token = md5 ('模块名' + '控制器名' + '方法名' + '2013-12-18' + '加密密钥') = 770fed4ca2aabd20ae9a5dd774711de2

其中的

1、 '2013-12-18' 為當天時間

2、'加密金鑰' 為私有的加密金鑰,手機端需要在服務端註冊一個「介面使用者」帳號後,系統會分配一個帳號及密碼,資料表設計參考如下:

欄位名字段類型註解

client_id varchar(20) 客戶端ID

client_secret varchar(20) 客戶端(加密)金鑰

服務端介面校驗,PHP實作流程如下:

<?php 
// 1、获取 GET参数 值 
$module = $_GET[&#39;mod&#39;]; $controller = $_GET[&#39;ctl&#39;] 
$action = $_GET[&#39;act&#39;]; $client_id = $_GET[&#39;client_id&#39;]; 
$api_token = $_GET[&#39;api_token‘]; 
// 2、根据客户端传过来的 client_id ,查询数据库,获取对应的 client_secret 
$client_secret = getClientSecretById($client_id); 
// 3、服务端重新生成一份 api_token 
$api_token_server = md5($module . $controller . $action .  date(&#39;Y-m-d&#39;, time()) .  $client_secret); 
// 4、客户端传过来的 api_token 与服务端生成的 api_token 进行校对,如果不相等,则表示验证失败 
if ($api_token != $api_token_server) { 
    exit(&#39;access deny&#39;);  // 拒绝访问 
    } 
// 5、验证通过,返回数据给客户端  
?>

以上是php如何帶著token請求接口的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn