0
点赞
收藏
分享

微信扫一扫

Laravel Api接口数据进行加解密


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解密

举报

相关推荐

0 条评论