[英]Session destroy randomly after redirection from PayU payment gateway redirection in Codeigniter 4
[英]Laravel Session and Auth clears after redirection from Payment Gateway
我正在使用 Laravel 7 並使用 PayTabs 支付網關進行支付。 當用戶從 Paytabs 重定向回來時,所有會話和身份驗證都將被清除。
在重定向到 Paytabs 之前,我會在將數據放入會話時保存會話。 作為
Session::put('data', $data);
Session::save();
重定向到 Paytabs 如下:
if ($response->response_code == "4012") { //Page created
return redirect()->to($response->payment_url);
} else {
abort(404);
}
我還從 CSRF 令牌檢查中排除了返回 url,如下所示:
驗證CsrfToke.php
protected $except = [
'/paytab_return'
];
我還檢查了 Paytabs 是否使用 https 和 www 重定向到正確的 URL。
需要幫助來解決這個問題。 謝謝
這適用於 Laravel 6.19.1:
$sessionKey = config('session.cookie') . '=' . session()->getId();
$successUrl = route('wirecardSuccess') . '?' . $sessionKey;
我得到的網址是例如
http://beatbox.vnr:8082/vnr/payment/wirecard/success?self_service_local_vnr_session=qNSQ7SessionIdtEA3Z72ReuvgsFt
作為 url,其中 self_service_local_vnr_session 是我的會話 cookie 名稱,qNSQ7SessionIdtEA3Z72ReuvgsFt 是當前會話的 ID。
<?php
declare(strict_types=1);
namespace App\Http\Middleware;
use Illuminate\Contracts\Session\Session;
use Illuminate\Http\Request;
/**
* Class StartSession
* @package App\Http\Middleware
*/
class StartSession extends \Illuminate\Session\Middleware\StartSession
{
/**
* Get the session implementation from the manager.
*
* @param Request $request
* @return Session
*/
public function getSession(Request $request): Session
{
return tap($this->manager->driver(), static function ($session) use ($request) {
$sessionCookieName = config('session.cookie');
if ($request->has($sessionCookieName)) {
$sessionId = $request->input($sessionCookieName);
} else {
$sessionId = $request->cookies->get($session->getName());
}
$session->setId($sessionId);
});
}
}
我希望它會幫助登陸此頁面的人:)
在 config/session.php 中編輯此字段
'path' => '/;samesite=none',
'secure' => true,
'same_site' => 'none',
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.