国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

無法修改request的post、get數據,求其它解決辦法

鄒意

問題描述

前端post過來的數據比如說有n個值,但都被加密最后變成一個值:encrypt_data=xxx,后端中間件需解密encrypt_data后把值重新裝進post里面,但webman不支持修改post的數據,以前使用thinkphp是支持的,目前想到的辦法:

1、把解密的值復制給 request()->xxx = xxx ,控制器或模型中就可以調用了;感覺不是很科學,不夠完美,控制器模型里面獲取值的地方都要改掉
2、直接修改request類,或重寫;感覺也不完美也麻煩,也擔心后續(xù)框架升級會有影響問題

原則是不喜歡修改框架本身自帶的功能,不知道還有哪些辦法

為此你搜索到了哪些方案及不適用的原因

搜索答案中都不支持修改post get數據

1634 6 2
6個回答

小W

控制器模型里面獲取值的地方都要改掉

無論如何都需要修改,是改動多少問題,可以重新封裝 Request類。

  • 暫無評論
ersic

改 support\Request.php 也沒事吧,沒什么東西

TM

在中間件里面封裝一層解密可以嗎

  • 暫無評論
ric
<?php
/**
 * This file is part of webman.
 *
 * Licensed under The MIT License
 * For full copyright and license information, please see the MIT-LICENSE.txt
 * Redistributions of files must retain the above copyright notice.
 *
 * @author    walkor<walkor@workerman.net>
 * @copyright walkor<walkor@workerman.net>
 * @link      http://wtbis.cn/
 * @license   http://www.opensource.org/licenses/mit-license.php MIT License
 */

namespace support;

/**
 * Class Request
 * @package support
 */
class Request extends \Webman\Http\Request
{
    //重寫獲取path用于域名路由
    public function path()
    {
        if (!isset($this->_data['path'])) {
            $uri = $this->uri();
            if(config('domain.enable', false)){
                //如果開啟了域名路由
                $bind = config('domain.bind', []);
                $domain = $this->host(true);
                if(isset($bind[$domain])) {
                    $uri = '/' . $bind[$domain] . $uri;
                }
            }
            $this->_data['path'] = (string)\parse_url($uri, PHP_URL_PATH);
        }
        return $this->_data['path'];
    }

    //添加setRoute方法,用于字段加解密后覆蓋post的方法
    public function setRoute(array $data):void{
        $this->_data['post'] = $data;
    }
}
  • 暫無評論
軟飯工程師

繼承\(zhòng)Webman\Http\Request,對你需要的方法進行重寫,比我我發(fā)現,我需要每個接口把傳過來的參數去除空格,然后我就把post 方法重寫了

    /**
     * $_POST.
     * 對該方法進行重寫,過濾空格
     * @param string|null $name
     * @param mixed|null $default
     * @return mixed|null
     */
    public function post($name = null, $default = null)
    {
        if (!isset($this->_data['post'])) {
            $this->parsePost();
        }
        if (null === $name) {
            $postData = [];
            foreach ($this->_data['post'] as $item => $value) {
                if (!is_array($value)) $value = trim($value);
                $postData[$item] = $value;
            }
            return $postData;
        }
        return isset($this->_data['post'][$name]) ? trim($this->_data['post'][$name]) : $default;
    }

你可以對他進行修改,增加其他的操作

  • 暫無評論
artisan

$currentBuffer = $request->rawBuffer();

POST /xx/xx HTTP/1.1
X-Real-IP: 127.0.0.1
Host: xxx.xx
X-Forwarded-Proto: http
Content-Length: 378
User-Agent: Apifox/1.0.0 (https://apifox.com)
Accept: */*
Accept-Encoding: gzip, deflate, br
Content-Type: multipart/form-data; boundary=--------------------------572433850403036298600651

----------------------------572433850403036298600651
Content-Disposition: form-data; name="name"

jhon
----------------------------572433850403036298600651
Content-Disposition: form-data; name="num"

100
----------------------------572433850403036298600651
Content-Disposition: form-data; name="code"

120.567
----------------------------572433850403036298600651--

//修改$currentBuffer
$newBuffer = processFunctiontName($currentBuffer);
$newRequest = new Request($newBuffer);

  • 暫無評論
年代過于久遠,無法發(fā)表回答
??