接口地址很容易被其他人所乱用,因此在客户端和服务端 以一样的方式生成加密串,再进行比较。从而确保安全
TP框架
_initialize、public function __construct() 不好使,因此写一个公共类,在每个接口第一句话执行一下,该验证类
1、公共类 TokenAction.class.php
<?php
class TokenAction extends action{
public function tokenValidate(){
$token = $_POST['token'];
$server_token = md5('@*daike_quanApp');
if(empty($token)){
$result=array('err_no' =>0000,'err_msg'=>"Illegal request");
echo json_encode($result); exit;
}
if($token!=$server_token){
$result=array('err_no' =>1111,'err_msg'=>"Illegal request");
echo json_encode($result); exit;
}
}
}
?>
2、调用接口时,调用公共类TokenAction.class.php的方法
【
R('Token/tokenValidate')
】
或在构造方法里写验证方法,每次执行类中的方法时,先执行构造方法,从而实现token的一 一验证
public function __construct(){
R('Token/tokenValidate'); //验证是否合法调用接口
}
========================================================或在方法时调用
//显示我的收藏客户 接口(调用第几页,默认是第一页)
public function viewCollect_CustomerList(){
R('Token/tokenValidate');// 此处调用
$p= $_POST['page'];
$userid = $_POST['userid'];
if(empty($userid)){
$result=array('err_no' =>1004,'err_msg'=>"userid22 is empty"); //用户id为空
echo json_encode($result); exit;
}
if($p){
redirect('/ApiCollect/Collect_Customerlist/p/'.$p.'?userid='.$userid);
}else{
redirect('/ApiCollect/Collect_Customerlist/?userid='.$userid);
}
}
TOKEN类,接收到客户端 来的值并验证是否正确
<?php
class TokenAction extends action{
public function tokenValidate(){
$token = $_POST['token'];
$server_token = md5('futong@*daike_quanApp2015');
if(empty($token)){
$result=array('err_no' =>0000,'err_msg'=>"Illegal request1");
echo json_encode($result); exit;
}
if($token!=$server_token){
$result=array('err_no' =>1111,'err_msg'=>"Illegal request2");
echo json_encode($result); exit;
}
}
}
?>