api接口token验证

Posted by

 

接口特点聚集:

1、因为是非开放性的,所以拥有的接口都是查封的,只对商厦内部的制品有效;

2、因为是非开放性的,所以OAuth那套左券是低效的,因为尚未中间客户的授权进程;

3、有一点接口要求顾客登入才干访谈;

4、有一点接口没有必要客户登入就可访谈;

PHP Token(令牌)

针对以上特点,移动端与服务端的通讯就供给2把钥匙,即2个token。

第二个token是本着接口的(api_token);
首个token是针对客户的(user_token);

先说第三个token(api_token)

它的职务是保持接口访谈的隐瞒性和有效,保障接口只可以给自亲人用,怎么产生?参照他事他说加以考查思路如下:
按服务器端和客商端都具备的同步属性生成三个随机串,顾客端生成那么些串,服务器也按近似算法变化二个串,用来校验客商端的串。

后天的接口基本是mvc格局,URAV4L基本是restful风格,UEscortL概略格式如下:

接口token生成准则参照他事他说加以侦查如下:
api_token = md5 (‘模块名’ + ‘调整器名’ + ‘方法名’ + ‘二〇一二-12-18’ +
‘加密密钥’) = 770fed4ca2aabd20ae9a5dd774711de2
其中的 
1、 ‘二〇一三-12-18’ 为当天光阴,
2、’加密密钥’
为民用的加密密钥,手提式有线电话机端须求在服务端注册二个“接口使用者”账号后,系统会分配一个账号及密码,数据表设计参照他事他说加以考察如下:
字段名 字段类型 注释 
client_id varchar(20) 客户端ID 
client_secret varchar(20) 客户端(加密)密钥 

服务端接口校验,PHP完毕流程如下:

[python] view
plain copy

 

 图片 1图片 2

  1. 服务端接口校验,PHP达成流程如下:  
  2. <?php   
  3. // 1、获取 GET参数 值   
  4. $module = $_GET[‘mod’]; $controller = $_GET[‘ctl’]   
  5. $action = $_GET[‘act’]; $client_id = $_GET[‘client_id’];   
  6. $api_token = $_GET[‘api_token‘];   
  7. // 2、依据客商端传过来的 client_id ,查询数据库,获取相应的 client_secret   
  8. $client_secret = getClientSecretById($client_id);   
  9. // 3、服务端重新生成生机勃勃份 api_token   
  10. $api_token_server = md5($module . $controller . $action .  date(‘Y-m-d’, time()) .  $client_secret);   
  11. // 4、客户端传过来的 api_token 与劳务端生成的 api_token 进行核查,假如不对等,则意味着验证战败   
  12. if ($api_token != $api_token_server) {   
  13.     exit(‘access deny’);  // 拒却访谈 } // 5、验证通过,重返数据给客商端    
  14. ?>  

再者说第二个token(user_token)

它的职务是保卫安全客商的顾客名及密码多次付出,避防密码走漏。

万黄金年代接口需求客商登陆,其访问流程如下:
1、顾客提交“客商名”和“密码”,完成登陆(条件允许,这一步最棒走https卡塔 尔(阿拉伯语:قطر‎;
2、登陆成功后,服务端重返二个 user_token,生成准绳参谋如下:
user_token = md5(‘用户的uid’ + ‘Unix时间戳’) =
etye0fgkgk4ca2aabd20ae9a5dd77471fgf
服务端用数据表维护user_token的意况,表设计如下:
字段名 字段类型 注释 
user_id int 用户ID 
user_token varchar(36) 用户token 
expire_time int 过期时间(Unix时间戳) 

(注:只列出了大旨字段,其它的再扩充吧!!!卡塔 尔(英语:State of Qatar)

劳务端生成 user_token
后,再次来到给客商端(本人积累卡塔 尔(英语:State of Qatar),顾客端每一遍接口要求时,要是接口需求客商登入技术访问,则必要把
user_id 与 user_token
传回给服务端,服务端选拔到那2个参数后,需求做以下几步:

1、检测 api_token的有效性;

2、删除过期的 user_token 表记录;

3、根据 user_id,user_token
获取表记录,尽管表记录海市蜃楼,直接回到错误,要是记录存在,则进行下一步;

4、更新 user_token 的逾期时间(延期,保障其保质期内连接操作不掉线卡塔 尔(英语:State of Qatar);

5、重回接口数据;

接口用比如下:

诉求情势:  POST
POST参数:title=作者是标题&content=作者是内容
回来数据:
{
       ‘code’ => 1, // 1:成功 0:失败
      ‘msg’ => ‘操作成功’ // 登入失利、无权访谈
      ‘data’ => []
 }

PHP Token(令牌)-相关链接

[python] view
plain copy

 

 图片 3图片 4

  1.   
  2.   
  3.  

相关文章

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注