对于前端Post的传参Body进行加密,但是解密有点问题

初试

暂时未通过前端去做加密,只是后端直接跑了一下加密代码,就开始测试了,
截图
使用Apipost工具操作
截图
然后后解析的代码如下
$rawData = $request->rawBody();
$aes = new AesEnryption(config('app.rsaKey.app_key'));
$postData = $aes->decrypt($rawData);
$postData = \json_decode($postData, true);
在控制台打印$rawData的数据如下
截图
$request->rawBody()里面返回的数据好像连头部也返回了,要怎么去操作,在工具上面测试解密成功呢

440 2 0
2个回答

nitron

按照你上面的方式,应该是$request->post('body')

  • 初试 2024-01-26

    那如果我用get呢,再加一个吗

  • 初试 2024-01-26

    就按照$request->post('body')来的话,我怎么把解密的参数从中间件里面返回回去呢

  • 初试 2024-01-26

    就是能在方法里面继续使用$request->post()获取到解密后的参数

Jinson

config/app.php里可以配置'request_class' => Request::class,那进support\Request里把parsePost这个方法重写一下应该就可以,试下

  • 初试 2024-01-26
    public function parsePost($arr = [])
    {
        if($arr){
            // 置空Post数据信息
            $this->_data['post'] = array();
            foreach ($arr as $k => $item){
                $this->_data['post'][$k] = $item;
            }
    
            return $this;
        }
    
        return parent::parsePost();
    }  我这样写是能实现的,也想让大佬帮忙看看有没有什么问题
  • Jinson 2024-01-26

    这个方法没有传参呀,看你业务是需要把get、post都重写,那就参考Protocols/Http/Request.php里parsePost、parseGet原方法,比如在 $body_buffer = $this->rawBody(); 后进行解密处理

  • 初试 2024-01-26

    嗯,好的,感谢

🔝