在中间件里面使用 session 报错和,thinkorm 冲突

问题描述

在中间件使用 session 报错
是初始化 session 和 thinkOrm 冲突了

程序代码或配置

 public function process(Request $request, callable $handler) : Response
    {
        // $session = $request->session();
        // $uid = $session->get('uid', '');

        dump(session('uid'));
        $uid=1;
        if($request->controller=="app\manage\controller\LoginController"){ //这个是微信支付的回调,以后回调都写在这个控制器里面的了

        }else{
            if(!$uid){
                return redirect('/manage');
            }
        }
        if($uid){
            //记录日志
            ManageLogModel::create([
                'uid'=>$uid,
                'url'=>$request->uri(),
                'ip'=>$request->getRealIp($safe_mode=true),
                'parame'=>json_encode($request->all()),
            ]);
        }

        $response = $handler($request); // 继续向洋葱芯穿越,直至执行控制器得到响应

        return $response;
    }

报错截图

TypeError: Cannot auto-initialize an array inside property think\Model::$weakMap of type ?WeakMap in /www/wwwroot/wanjia/vendor/topthink/think-orm/src/Model.php:883
Stack trace:
#0 [internal function]: think\Model->__unserialize()
#1 /www/wwwroot/wanjia/vendor/workerman/workerman/src/Protocols/Http/Session.php(171): unserialize()
#2 /www/wwwroot/wanjia/vendor/workerman/workerman/src/Protocols/Http/Request.php(305): Workerman\Protocols\Http\Session->__construct()
#3 /www/wwwroot/wanjia/vendor/workerman/webman-framework/src/support/helpers.php(376): Workerman\Protocols\Http\Request->session()
#4 /www/wwwroot/wanjia/app/middleware/ManageMain.php(16): session()
#5 /www/wwwroot/wanjia/vendor/workerman/webman-framework/src/App.php(352): app\middleware\ManageMain->process()
#6 /www/wwwroot/wanjia/vendor/webman/log/src/Middleware.php(97): Webman\App::Webman\{closure}()
#7 /www/wwwroot/wanjia/vendor/workerman/webman-framework/src/App.php(352): Webman\Log\Middleware->process()
#8 /www/wwwroot/wanjia/app/middleware/Init.php(27): Webman\App::Webman\{closure}()
#9 /www/wwwroot/wanjia/vendor/workerman/webman-framework/src/App.php(352): app\middleware\Init->process()
#10 /www/wwwroot/wanjia/vendor/workerman/webman-framework/src/App.php(180): Webman\App::Webman\{closure}()
#11 /www/wwwroot/wanjia/vendor/workerman/workerman/src/Connection/TcpConnection.php(750): Webman\App->onMessage()
#12 /www/wwwroot/wanjia/vendor/workerman/workerman/src/Events/Select.php(406): Workerman\Connection\TcpConnection->baseRead()
#13 /www/wwwroot/wanjia/vendor/workerman/workerman/src/Worker.php(1751): Workerman\Events\Select->run()
#14 /www/wwwroot/wanjia/vendor/workerman/workerman/src/Worker.php(1546): Workerman\Worker::forkOneWorkerForLinux()
#15 /www/wwwroot/wanjia/vendor/workerman/workerman/src/Worker.php(1526): Workerman\Worker::forkWorkersForLinux()
#16 /www/wwwroot/wanjia/vendor/workerman/workerman/src/Worker.php(1894): Workerman\Worker::forkWorkers()
#17 /www/wwwroot/wanjia/vendor/workerman/workerman/src/Worker.php(1831): Workerman\Worker::monitorWorkersForLinux()
#18 /www/wwwroot/wanjia/vendor/workerman/workerman/src/Worker.php(596): Workerman\Worker::monitorWorkers()
#19 /www/wwwroot/wanjia/vendor/workerman/webman-framework/src/support/App.php(147): Workerman\Worker::runAll()
#20 /www/wwwroot/wanjia/start.php(5): support\App::run()
#21 {main}
125 2 0
2个回答

好了找到原因了,是因为 把thinkorm 查出来 的存进 session 就报错了,先 toArray 一下,在存啊!!!

  • 暂无评论
lsmir2

上调试器一步一步调吧 , 不是这么用吗$request->session();

4 /www/wwwroot/wanjia/app/middleware/ManageMain.php(16): session()

  • 暂无评论
🔝