为什么 Laravel 用户从付款重定向回来后注销?

Had*_*deh 4 laravel

我将我的 Laravel 应用程序部署到共享主机(cpanel)。对于付款,用户首先重定向到银行帐户,然后重定向到我的页面。在此过程中,用户将被注销!

为了保护我的路由,我使用 auth 中间件,而对于会话驱动程序,我使用默认的会话驱动程序文件。此外,框架/会话的权限为 777。

这是重定向到银行页面的代码:

            $go = "https://thebank/example";
            redirect()->to($go)->send();
Run Code Online (Sandbox Code Playgroud)

付款成功后,银行会重定向到我指定的用于验证付款的路线。

Route::get('/payment/callBack' , 'PaymentController@VerifyData')->middleware('auth');
Run Code Online (Sandbox Code Playgroud)

该路由使用 auth 中间件,但是大多数时候用户没有登录并自动重定向到登录页面。我注意到如果我不使用 auth 中间件,并且如果用户刷新用户自动登录的页面。这不是 Laravel 通常会发生的事情。我还尝试了会话的 cookie 驱动程序,但它不起作用并导致了更多问题。

我在默认的 PHP $_SESSION 中存储 user_id 和 cart_id 也没有取得任何成功。当用户从银行页面重定向回来时,所有会话似乎都被清除了。

我该如何解决这个问题?

Cod*_*Era 5

Laravel 7 的变化

我们的软件包与 Laravel 7 兼容,但在默认 Laravel 安装中更改了 same_site 设置,请确保您更改same_sitenullin config/session.php或回调将不包含 cookie,并且您将在付款完成后注销。所以在你的config/session.php更新里面

return [
  ...
  ...
  'same_site' => null,
  ...
  ...
];
Run Code Online (Sandbox Code Playgroud)

  • 完成此操作,但仍将我注销 (3认同)

Had*_*deh 1

这是我自己解决的一个非常老的问题,但忘记分享解决方案。但是,我看到此页面仍然处于活动状态,我决定分享我的解决方案。

我的问题实际上是重定向 URL 的协议。我的错误是我将重定向 URL 设置为'/payment/callBack'to http。虽然我的网站是https. https和 的会话http不同,因此登录的用户https无法登录到http。我的解决方案是首先将 URL 回调更正为 https 版本。并设置 nginx 配置以将所有内容重定向httphttps.