overtrue / laravel-wechat

微信 SDK for Laravel, 基于 overtrue/wechat
MIT License
2.87k stars 500 forks source link

oauth 认证无限循环 #232

Closed pengwenbin7 closed 6 years ago

pengwenbin7 commented 6 years ago

\Overtrue\LaravelWeChat\Middleware\OAuthAuthenticate 中记录日志:

        if (!$session) {
            if ($request->has('code')) {
                session([$sessionKey => $officialAccount->oauth->user() ?? []]);
                $isNewSession = true;

                Event::fire(new WeChatUserAuthorized(session($sessionKey), $isNewSession, $account));
        Log::info("中间件跳转");
                return redirect()->to($this->getTargetUrl($request));
            }

            session()->forget($sessionKey);

            return $officialAccount->oauth->scopes($scopes)->redirect($request->fullUrl());
        }

查看日志:

xl@xl:~/apps/weshop/storage/logs$ more laravel.log 
[2018-04-15 10:04:12] local.INFO: request arrived.  
[2018-04-15 10:04:15] local.INFO: 中间件跳转  
[2018-04-15 10:04:16] local.INFO: 中间件跳转  
[2018-04-15 10:04:19] local.INFO: 中间件跳转  
[2018-04-15 10:04:20] local.INFO: 中间件跳转  
[2018-04-15 10:04:21] local.INFO: 中间件跳转  
[2018-04-15 10:04:22] local.INFO: 中间件跳转  
[2018-04-15 10:04:23] local.INFO: 中间件跳转  
[2018-04-15 10:04:23] local.INFO: 中间件跳转  
[2018-04-15 10:04:24] local.INFO: 中间件跳转  
[2018-04-15 10:04:25] local.INFO: 中间件跳转  
[2018-04-15 10:04:26] local.INFO: 中间件跳转  
[2018-04-15 10:04:27] local.INFO: 中间件跳转  
[2018-04-15 10:04:28] local.INFO: 中间件跳转  
[2018-04-15 10:04:29] local.INFO: 中间件跳转  
[2018-04-15 10:04:30] local.INFO: 中间件跳转  
[2018-04-15 10:04:31] local.INFO: 中间件跳转  
[2018-04-15 10:04:31] local.INFO: 中间件跳转  
[2018-04-15 10:04:32] local.INFO: 中间件跳转  
[2018-04-15 10:04:33] local.INFO: 中间件跳转  
[2018-04-15 10:04:34] local.INFO: 中间件跳转  
[2018-04-15 10:04:35] local.INFO: 中间件跳转  
[2018-04-15 10:04:36] local.INFO: 中间件跳转  
[2018-04-15 10:04:37] local.INFO: 中间件跳转  
[2018-04-15 10:04:38] local.INFO: 中间件跳转  
[2018-04-15 10:04:39] local.INFO: 中间件跳转  
--More--(40%)

疑似在登录前session不存储。

overtrue commented 6 years ago

检查你的 session 情况。

jorycn commented 6 years ago

@overtrue 建议自行调试一下,我在包里面路由使用wechat.oauth中间件会出现session不存储现象,在根路由下不会出现。

overtrue commented 6 years ago

我的环境一直好好的用着啊

Jory Zhou notifications@github.com于2018年6月7日 周四下午6:05写道:

@overtrue https://github.com/overtrue 建议自行调试一下,我在包里面路由使用wechat.oauth中间件会出现session不存储现象,在根路由下不会出现。

— You are receiving this because you were mentioned.

Reply to this email directly, view it on GitHub https://github.com/overtrue/laravel-wechat/issues/232#issuecomment-395366334, or mute the thread https://github.com/notifications/unsubscribe-auth/ABZ3YBb_WBrRbIcqdvWlqdNjEhxjBdJ7ks5t6PrdgaJpZM4TVTVv .

SamHz commented 6 years ago

遇到相同问题,请问Session要怎么设置,不段要来回跳微信正在登录 Session默认使用的是file模式,难道要设置其他模式吗?@overture

overtrue commented 6 years ago

@SamHz 确认你的 session 正确写入了。

TmpWork commented 6 years ago

和上面的几位兄台一样,都是无限循环,查看了session不停的存入 @overtrue

TmpWork commented 6 years ago

@overtrue 安大神,我的情况是昨天还好好的,今天手机上就不行了,换了多个手机测试。但是开发者工具却是OK的。。很是疑惑。

SamHz commented 6 years ago

@TmpWork 我用的是Laravel5.5, 不知道你是否在获取结果后return response()完成这次请求,因为我发现使用另一个laravel/socialite有类似的问题,但只是微信返回多次的原因,目前我用laravel/socialite来做微信的Oauth登录,每个请求一定要做response

pengwenbin7 commented 6 years ago

@TmpWork 检查是不是所有经过的路由都开启了 session