Laravel 利用中间件处理API接口数据加解密;
在某些时候,为了接口数据的安全和保密性,需要对来回的数据进行加密处理。如果是 Laravel 框架,中间件绝对是个好东西。
Laravel 中间件包含一个完整的工作流,即请求前中间件(request)和请求后中间件(response)。在我们这次的场景中,刚好很好的用到了整个流程。
附上代码:
首先添加QuerySecret中间件:
运行命令:php artisan make:middleware QuerySecret
protected $routeMiddleware = [ 'querysecret' => \App\Http\Middleware\QuerySecret::class ];
编写中间件代码:
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
*
* @return mixed
*/
public function handle($request, Closure $next)
{
//针对字段参数的加解密
$arr = [
'id',
];
$params = $request->input();
foreach ($arr as $item) {
if (isset($params[$item])) {
$params[$item] = authCodeId($params[$item], 'decode');
}
}
$input = $request->input();
//对 input 里的数据进行解密,解密后的数据再继续给到 request 中
//解密后的数据
$request->merge($input);
$response = $next($request);
//拿到需要返回的数据,然后进行加密
$content = $response->getContent();
if ($content) {
$content = json_decode($content, true);
foreach ($arr as $v) {
if ( !empty($content['data']['list']) && is_array($content['data']['list'])) {
foreach ($content['data']['list'] as $k => &$val) {
if ($k == $v) {
$val = authCodeId($val, 'encode', 16);
}
}
unset($val);
} elseif ( !empty($content['data'][$v])) {
$content['data'][$v] = authCodeId($content['data'][$v], 'encode', 16);
}
}
# 对 content 进行加密处理
$response->setContent(json_encode($content));
}
return $response;
}
注意自己API返回的格式,按照返回的格式,照着改改,搞定~
Laravel Api接口数据进行加解密_Websites的博客_laravel md5解密
标签:Laravel,中间件,request,加解密,content,Api,input,data,response From: https://blog.51cto.com/u_3135183/6427667