添加token的目的当然是为了api接口的安全性。 等等~~~
首先声明一些验证规则
保护性$请求; //用于参数的处理
保护性$ validate r; //用于数据/参数的验证
保护性$ params; //过滤以满足要求的参数
保护性$ rules=array (
' Login'=array (
' login_join'=array (
' mobile'=['require ',' max'=11],
' password '=' require|length :6,18 ',
请参阅。
请参阅。
);
//*
*构造函数
*初始化检测要求时间、签名等
*/
公共函数_初始化(
parent:_initialize (;
//获取参数
$ this-request=request :3360 instance (;
//验证是否超时
$ this-check _ time ($ this-request-only ([ ' timestamp ' ] ) );
//验证
$ this-check _ token ($ this-request-param );
//验证参数
$ this-params=$ this-check _ params ($ this-request-except ([ ' timestamp ',' token'] );
}
定义返回个数据的方法
//*
* api数据回复
* @param [int] $code [结果代码200:正常/4**数据问题/5**服务器问题]
* @ param [字符串] $ msg [接口返回的提示信息]
* @param [array] $data [接口返回的数据]
* @return [string] [最终json数据]
*/
publicfunctionreturn_msg($code,$msg=',$data=[] ) {
$return_data['code']=$code;
$return_data['msg']=$msg;
$return_data['data']=$data;
EchoJSON_encode($return_data;
die;
}
确认是否超时
//*
*确认请求已超时
* @param [array] $arr [包含时间戳的参数数组]
* @return [json] [检查结果]
*/
publicfunctioncheck_time($arr ) {
if (! isset $ arr [ ' timestamp ' ]|| intval [ $ arr [ ' timestamp ' ] ]=1) {
$this-return_msg(1,' Timestamp error ';
}
if (时间(-intval ) $arr('timestamp ' ) 300 ) ) ) ) ) ) ) )。
$this-return_msg(1,'请求时间输出';
}
}
验证token
//*
验证token (防止数据篡改)
* @param [array] $arr [所有请求参数]
* @return [json] [token验证结果]
*/
publicfunctioncheck_token($arr ) {
/* * * * * * * *来自API的token ***********/
if (! isset($arr('token ) ) )。
$this-return_msg(1,' Token can`t be empty ' );
}
$app_token=$arr['token']; //api传来的token
/********在服务器端访问token ***********/
unset($ARR ) ' Token ' );
$service_token=' ';
Foreach($arras$key=$value ) {
$service_Token.=MD5($value );
}
$ service _ token=MD5 (config (app.log in _ begin ).$ service _ token.config (app.log in _ end ) ) ); //服务器端实时生成的token
/* * * * * * *与token相比,结果***********/
if ($app_token!==$service_token )
$this-return_msg(1,' Token is not correct ' );
}
}
验证参数
//*
*验证参数过滤
* @ param [ array ] $ arr [除time和token以外的所有参数]
* @return [return] [通过参数数组]
*/
publicfunctioncheck _ params ($ arr ) {
/*******获取参数的验证规则***********/
$ rule=$ this-rules [ $ this-request-controller (] [ $ this-request-action ) ];
/*******验证参数,错误***********/
$ this-validate r=new validate ($ rule );
if (! $this-validater-check($arr ) }{
$this-return_msg(1,$this-validater-getError ) );
}
/*******如果正常,则为***********/
返回$ arr;
}
可以登录并保存token,也可以针对每个请求验证token。