如何在 Laravel 11 中禁用某些单个页面的 CSRF

问题描述 投票:0回答:1

我正在使用 Laravel 11.3 接收来自 Issabel 的事件。当我通过 Issabel 的 Eventhandeler PHP AMI 文件中的 Curl 发送数据时,服务器响应时显示 HTTP 代码 419。 ChatGPT 告诉我代码发生了一些变化,但不幸的是它们不起作用并且适用于以前版本的 Laravel。例如,在

App.php
中添加一些更改,例如:

->withMiddleware(function (Middleware $middleware) {
    // Completely disable CSRF for testing
    $middleware->withoutCsrf();
})

在其他页面上显示此错误,但从 Issabel 发送数据效果很好。

(!) 致命错误:未捕获错误:调用 C:\Users\Administrator\Desktop echno echnoav ootstrap pp.php 第 16 行中的未定义方法 Illuminate\Foundation\Configuration\Middleware::withoutCsrf()

经过一番谷歌搜索后,我使用了这段代码:

->withMiddleware(function (Middleware $middleware) {
    $middleware->validateCsrfTokens(except: [
        'missedcalls',               // Relative path
        'http://192.168.10.29/*',    // Full URL with wildcard
    ]);
})

这与其他页面配合良好,但当我从 Issabel 发送数据时显示 http 错误 419。

现在的问题是如何在 Laravel 11.3 上禁用某些地址的 CSRF。正如这些链接 Laravel CSRFLaravel Changes 中提到的,Laravel 11 中发生了许多变化,但没有很好的文档。我很感激任何帮助。

php laravel laravel-11
1个回答
0
投票

添加此代码应该可以工作。如果不起作用请告诉我发生了什么事

class VerifyCsrfToken extends BaseVerifier
{
    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array<int, string>
     */
    protected $except = [
        'missedcalls',                   // Specific route
        'http://192.168.10.29/*',         // Full URL with wildcard
        'api/issabel-webhook/*',          // Example for Issabel-specific routes
    ];
}
© www.soinside.com 2019 - 2024. All rights reserved.