【问题标题】:Laravel 5: POST without CSRF checkingLaravel 5:没有 CSRF 检查的 POST
【发布时间】:2015-01-15 13:22:01
【问题描述】:

似乎 Laravel 5 默认将 CSRF 过滤器应用于所有非获取请求。这对于表单 POST 来说是可以的,但对于 POST DELETE 等 API 来说可能是个问题。

简单的问题:

如何设置没有 CSRF 保护的 POST 路由?

【问题讨论】:

  • 表示保护被解除。最好将令牌作为 API 调用的一部分传递。 (我知道这是一个老问题,只是警告新访客)

标签: csrf laravel-5


【解决方案1】:

我对这个问题的破解:

CSRF 现在是在App\Http\Kernel.php 中全局注册的“中间件”。删除它将默认没有 CSRF 保护(Laravel4 行为)。

在路由中启用它:

  1. 在您的 app/Providers/RouteServiceProvider.php 中创建一个速记键:

    protected $middleware = [
      // ....
      'csrf'  => 'Illuminate\Foundation\Http\Middleware\VerifyCsrfToken',
    ];
    
  2. 您现在可以将其启用到任何路线:

    $router->post('url', ['middleware' => 'csrf', function() {
     ... 
    }]);
    

不是最优雅的解决方案 IMO...

【讨论】:

    【解决方案2】:

    您可以从 CSRF 中排除 URI,只需将它们添加到 VerifyCsrfToken 中间件的 $except 属性(app/Http/Middleware/VerifyCsrfToken.php):

    <?php
    
    namespace App\Http\Middleware;
    
    use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;
    
    class VerifyCsrfToken extends BaseVerifier
    {
        /**
         * The URIs that should be excluded from CSRF verification.
         *
         * @var array
         */
        protected $except = [
            'api/*',
        ];
    }
    

    文档:http://laravel.com/docs/5.1/routing#csrf-protection

    【讨论】:

    • 我用同样的方法来防止 API 调用上的 CSRF Token 保护
    【解决方案3】:

    只要听听这个。就在 30 分钟之前,我遇到了同样的问题。现在它解决了。试试这个。

    转到应用程序 -> HTTP-> 内核

    打开内核文件。

    在那里你可以看到:\App\Http\Middleware\VerifyCsrfToken::class,

    只需使用 //

    禁用此特定代码

    就是这样!这会奏效!

    这样您就可以从 API 调用中删除中间件(如果您愿意的话..)

    【讨论】:

    【解决方案4】:

    转到app/Http/Middleware/VerifyCsrfToken.php,然后在 $except 数组中输入您的路线(您要为其禁用 csrf 令牌)。

    例如:

    class VerifyCsrfToken extends BaseVerifier
    {
    
        protected $except = [
    
            '/register'
    
        ];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-11
      • 2020-04-14
      • 1970-01-01
      • 2017-06-17
      • 2013-06-24
      • 1970-01-01
      • 2016-04-05
      • 1970-01-01
      相关资源
      最近更新 更多