【问题标题】:Laravel 7 Weird Logout IssueLaravel 7 奇怪的注销问题
【发布时间】:2020-06-27 19:08:38
【问题描述】:

我刚刚完成了一个 Laravel 7 应用程序。完成付款后,我现在遇到了奇怪的问题。我将 LOGGED IN USER 发送到支付网关,用户付款,网关将用户作为 POST 请求发送回网站。但是永远不会调用网站响应操作。由于它在 auth 中间件下,用户是我不知道如何注销并发送到登录屏幕。

路由定义如下:

<?php

Route::middleware('auth')->group(function () {

    // This sends the user to gateway
    Route::post('subscription', 'SubscriptionController@renew')->name('subscription.renew');

    // Gateway sends the user back here
    Route::post('subscription/process', 'SubscriptionController@process')->name('subscription.process');
});

检查网络选项卡的跳数如下:

POST http://localhost:8000/subscription -> 302 << gateway >>
<< gateway >> -> POST http://localhost:8000/subscription/process -> 302 http://localhost:8000/login

在应用发送到http://localhost:8000/login 的响应中,标头根据需要具有laravel_session cookie。

但是操作 http://localhost:8000/subscription/process 从未被调用并且用户已注销。在 Laravel 6 之前,使用相同的支付网关从未遇到过此类问题。

此外,我还在下面的 URL 中添加了 VerifyCsrfToken 中间件,因为最初它正在抛出 419。

<?php

namespace App\Http\Middleware;

use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;

class VerifyCsrfToken extends Middleware
{
    protected $except = [
        '/subscription/process',
    ];
}

谁能解释一下可能是什么原因?

【问题讨论】:

标签: php laravel razorpay


【解决方案1】:

发现了!这是由于在 Laravel 7 会话 cookie 中默认设置了 SameSite=Lax,就像在 https://github.com/laravel/laravel/commit/2913a55d87461fabe94907c5728d7a9451bcae80 提交中一样。

【讨论】:

    猜你喜欢
    • 2016-12-01
    • 2012-07-30
    • 2016-01-31
    • 2010-10-02
    • 1970-01-01
    • 2018-02-20
    • 2013-12-24
    • 2019-07-27
    • 2020-11-02
    相关资源
    最近更新 更多