微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从付款网关重定向后,Laravel会话和身份验证将清除

如何解决从付款网关重定向后,Laravel会话和身份验证将清除

我正在使用Laravel 7,并使用PayTabs付款网关进行付款。当用户从“付款”标签重定向后,所有会话和Auth均会清除。

重定向到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令牌检查中排除了返回网址,如下所示:

VerifyCsrftoke.PHP

protected $except = [
   '/paytab_return'
];

我还检查了Paytabs是否使用https和www重定向到正确的URL。

收藏夹需要解决此问题。谢谢

解决方法

这适用于Laravel 6.19.1:

  1. 我在付款门的成功,错误或cancelUrl中添加了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中间件
<?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. 已付款,重定向网址(带有会话ID)使我可以检索旧的会话信息。

我希望它能对登陆此页面的人有所帮助:)

,

在 config/session.php 中编辑此字段

requestLocationUpdates

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。