簡體   English   中英

從支付網關重定向后 Laravel 會話和身份驗證清除

[英]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:

  1. 我在付款門的成功、錯誤或取消網址中添加了一個 GET 變量
  2. 此變量的調用與會話 cookie 的名稱完全相同
$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。

  1. 然后我需要使用此代碼擴展 StartSession Middleware
<?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);
        });
    }
}
  1. 付款已完成,重定向 url(帶有會話 ID)允許我檢索舊的會話信息。

我希望它會幫助登陸此頁面的人:)

在 config/session.php 中編輯此字段

'path' => '/;samesite=none',
'secure' => true,
'same_site' => 'none',

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM