使用 easywechat 拓展包模拟用户登陆的时候出现无法模拟的情况,经过反复测试发现以下问题:

Laravel 方法最后才会写入session
die 停止了后面的代码,(写入 session 等)

别用 exit,dd 等函数停止,使用return, 让后续代码执行。

Session::save() 执行写入 session

如下代码会使 easywechat 的默认中间件 'wechat.oauth' => \Overtrue\LaravelWeChat\Middleware\OAuthAuthenticate::class, 无法正确获取 session 信息
public function mock()
    {
        if (app()->environment() === 'local') {

            $sessionKey = 'wechat.oauth_user.default';
            $user = new User([
                "id"       => "oaa2vs-HAjs0s4_yUWQai0P0pvZk",
                "name"     => "NULL",
                "nickname" => "NULL",
                "avatar"   => "https://thirdwx.qlogo.cn/mmopen/vi_32/n8QhTK8Q0dAOsWy0CS66PJ8yLcRUZ7UctHEYzTDet74ibPeeqD7f2QhXXDh5zL7INZaZy8ZMXbicwYHiaibOewHYXw/132",
                "email"    => null
            ]);
            session([$sessionKey => $user]);

            dd($user);
        }
        dd('当前环境无法模拟');
    }

将上述代码中的 dd 改为 return 即可正常获取会话数据

public function mock()
    {
        if (app()->environment() === 'local') {

            $sessionKey = 'wechat.oauth_user.default';
            $user = new User([
                "id"       => "oaa2vs-HAjs0s4_yUWQai0P0pvZk",
                "name"     => "NULL",
                "nickname" => "NULL",
                "avatar"   => "https://thirdwx.qlogo.cn/mmopen/vi_32/n8QhTK8Q0dAOsWy0CS66PJ8yLcRUZ7UctHEYzTDet74ibPeeqD7f2QhXXDh5zL7INZaZy8ZMXbicwYHiaibOewHYXw/132",
                "email"    => null
            ]);
            session([$sessionKey => $user]);

            return($user);
        }
        return('当前环境无法模拟');
    }

标签: php, laravel, easywechat