我有一个 Laravel 网站,它重定向到支付提供商(外部第三方网站)。当用户完成付款后,他们会通过 POST 请求重定向回我的网站。
我遇到的问题是,当用户返回确认页面时,他们的会话会丢失。
我想知道这是否是 PHP 的普遍行为,但它似乎是 Laravel 特有的。
我已经检查了我的sessions.php配置文件并可以确认以下内容已设置'expire_on_close' => false,
.
我为下面的问题创建了一个非常基本的示例
我的网站(预售)
控制器
public function redirect()
{
$user = Auth::user();
dd($user); // returns User model;
redirect()->away('http://www.example.com');
}
支付提供商网站
请注意,请求是通过浏览器内的应用程序发送的,而不是回调。也没有按钮。我只是想演示返回 Laravel 站点的 POST。
<html>
<head></head>
<body>
<form method="POST" action="http://www.example.com/payment/confirmation">
<input type="submit">
</form>
</body>
</html>
我的网站(售后)
Route
Route::post('/payment/confirmation', 'Payment\PaymentController@confirmation');
控制器
public function confirmation()
{
$user = Auth::user();
dd($user); // Returns null
}
我已经添加了VerifyCsrfToken中间件的异常数组的路径。 Laravel 中是否有任何内容会破坏通过外部网站发布的会话?我确信我错过了一些明显的东西。谢谢