【问题标题】:Laravel: Excluding routes from VerifyCsrfToken middleware programmaticallyLaravel:以编程方式从 VerifyCsrfToken 中间件中排除路由
【发布时间】:2018-04-16 23:00:11
【问题描述】:

我想知道是否有办法以编程方式将路由添加到 VerifyCsrfToken 类中的 $except 变量。

class VerifyCsrfToken extends BaseVerifier
    {
        /**
         * The URIs that should be excluded from CSRF verification.
         *
         * @var array
         */
        protected $except = [
            //
        ];
    }

我正在开发一个从支付网关监听 webhook/postback 的包。如果在安装包时将我的自定义路由添加到 $except 变量中会更好。

谢谢

【问题讨论】:

  • 很难进行更改,因为每次刷新页面时都需要新的请求,如果您不重新加载页面,那么您可以这样做。否则写入文件将起作用。
  • 如果您说的是仅在安装软件包时执行某些操作,我不会调用“以编程方式”。但是,如何将其扩展为自定义类,并使其从配置文件中读取异常?
  • @Amarnasan 如果要创建自定义类,我想我需要将它添加到内核中
  • 你可以在你的包安装中以编程方式将你的自定义路由包含到那个变量中。只需在 VerifyCsrfToken.php 文件上读取然后写入即可。
  • 类似这样的东西:$file = 'app/Http/Middleware/VerifyCsrfToken.php'; file_put_contents($file, str_replace('$except','$except=["custom/route/to/exclude",', file_get_contents($file)));

标签: laravel csrf-protection


【解决方案1】:

我决定将我的自定义路由添加到 api.php

file_put_contents(
 base_path('routes/api.php'),
 file_get_contents(__DIR__.'/stubs/make/routes.stub'),
 FILE_APPEND
);

VerifyCsrfToken 中间件不拦截api.php

中的路由

【讨论】:

    猜你喜欢
    • 2021-03-20
    • 1970-01-01
    • 2016-09-29
    • 2015-09-22
    • 1970-01-01
    • 2021-08-20
    • 2023-03-16
    • 2017-06-25
    • 1970-01-01
    相关资源
    最近更新 更多