laravel 5.6 исключает маршруты webhook из промежуточного программного обеспечения csrf - PullRequest
0 голосов
/ 31 мая 2018

У меня есть маршрут из web.php:

Route::get("webhook", "BotController@verify_token");
Route::post("webhook", "BotController@handle_query");

как мне исключить их из промежуточного программного обеспечения CSRF?

Я попробовал следующий код в VerifyCsrfToken.php, но он все еще не работает.

<?php

namespace App\Http\Middleware;

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

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

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

Уже нашли решение.Я только что удалил "/*".

protected $except = [
    'webhook'
];
0 голосов
/ 31 мая 2018

Один из способов заключается в расширении VerifyCsrfToken и создании массива без URL-адресов csrf:

  <?php namespace App\Http\Middleware;

 use Closure;
 use Illuminate\Session\TokenMismatchException;

class VerifyCsrfToken extends 
\Illuminate\Foundation\Http\Middleware\VerifyCsrfToken {

protected $except_urls = [
    'contact/create',
    'contact/update',
    ...
];

public function handle($request, Closure $next)
{
    $regex = '#' . implode('|', $this->except_urls) . '#';

    if ($this->isReading($request) || $this->tokensMatch($request) || preg_match($regex, $request->path()))
    {
        return $this->addCookieToResponse($request, $next($request));
    }

    throw new TokenMismatchException;
}

  }

и изменения в ядре для указания нового промежуточного программного обеспечения:

protected $middleware = [

  'App\Http\Middleware\VerifyCsrfToken',
];
...