无法获取用户登录状态(需刷新页面)
本人在开发微信二维码登录时,遇到了用户无法登录的问题。
微信成功回调后,进入如下逻辑,代码在控制器中
public function callBack(WechatCallBackRequest $request){
//**微信处理逻辑**
$model = User::whereWeixinUnionid($unionId)
->where('is_active', 1)
->whereIn('role', [2, 3])
->first();
if (is_null($model)) {
return failJsonResponse(403, '无权访问.');
}
\Auth::guard("web")->login($model,true);
return redirect()->route("home_page");
}
感觉是登录成功了,接下来跳转到登录后主页
很奇怪,竟然又要跳转到登录页面。。。
然后在登录页面刷新以下,就回到登录后的主页了。。。
不知道哪位大佬遇到过此类问题,求解答!
如果是以下写法,正常访问。
$router->get("/tmp/login/{id?}", function ($id = 1) {
Auth::guard("web")->login(\App\User::find($id));
return redirect()->route("home_page");
});
主要是 cookie 作用域问题,前面微信服务器回调时会话是自己服务器和微信服务器之间的,后面的 redirect()->route("home_page"); 其实是跨域了,和你在服务器上请求百度是一个意思。跳转回来后需要自己添加cookie并设置cookie作用域,之后再跳转就没问题了。