使用 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('当前环境无法模拟');
}