• laravel路由导出和参数加密


    路由导出

    代码位置:vendorlaravelframeworksrcIlluminateFoundationConsoleRouteListCommand.php

    protected function getRouteInformation(Route $route) {
    	$data       = $this->filterRoute([
    		'host'       => $route->domain(),
    		'method'     => implode('|', $route->methods()),
    		'uri'        => $route->uri(),
    		'name'       => $route->getName(),
    		'action'     => $route->getActionName(),
    		'middleware' => $this->getMiddleware($route),
    	]);
    	$path       = "./routeRewrite.log";
    	$fp         = fopen($path, "a+");
    	$before     = $route->uri();  //加密前
    	$after      = encrypt_aes($before, AES_KEY); //加密后
    	$middleware = $this->getMiddleware($route);
    	$array      = explode(",", $middleware);
    	$str        = "";
    	foreach ($array as $v) {
    		$str = $str . "'{$v}',";
    	}
    	$str   = substr($str, 0, strlen($str) - 1);
    	$route = "Route::post('{$after}', '\{$route->getActionName()}')->middleware({$str});";
    	fwrite($fp, $route . "
    ");
    	fclose($fp);
    	return $data;
    }
    

    中间件

    class AfterMiddleware {
        public function handle($request, Closure $next) {
            if ( $request->isMethod('post') ) {
                $str = file_get_contents("php://input");
                $key = AES_KEY;
                $data = decrypt_aes($str, $key);
                $body = json_decode($data, true);
                $request->merge($body);
                $response = $next($request);
                if ($response->status() == 200) {
                    $data = encrypt_aes($response->content(), $key);
                    $response->setContent($data);
                }
                return $response;
            }
            return $next($request);
    
        }
    }
    

    加密解密

    if (!function_exists('encrypt_aes')) {
        function encrypt_aes($data, $key) {
            $data = openssl_encrypt($data, 'aes-128-ecb', $key, OPENSSL_RAW_DATA);
            return base64_encode($data);
        }
    }
    if (!function_exists('decrypt_aes')) {
        function decrypt_aes($data, $key) {
            $encrypted = base64_decode($data);
            return openssl_decrypt($encrypted, 'aes-128-ecb', $key, OPENSSL_RAW_DATA);
        }
    }
    
  • 相关阅读:
    路由的props参数
    记录基于Vue2.0实现后台系统权限控制
    Object.keys()的详解和用法
    git checkout 命令所有参数用法详解
    JSONP原理及实现2
    珠峰vue笔记
    fastjson漏洞分析历史漏洞(图解)
    github 查询个人邮箱 (备忘)
    nmap 请求修改ua (nmap发送http请求的多种方式)
    如何有效进行回顾会议(上)?
  • 原文地址:https://www.cnblogs.com/HappyTeemo/p/15476013.html
Copyright © 2020-2023  润新知