Есть ли способ исключить маршрут из защиты CSRF из пакета в Laravel 5?

Я знаю о свойствах $except из промежуточного ПО VerifyCsrfToken ( app/Http/Middleware/VerifyCsrfToken.php ), но я ищу способ сделать что-то похожее из моего пакета (так что пользователям, которые его устанавливают, не нужно изменять их VerifyCsrfToken.php для моего маршрута работы).

Я могу определить маршруты на моем пакете, но я не знаю, как исключить один (или более) из них из промежуточного ПО по умолчанию. Я пробовал продлить Illuminate\Foundation\Http\Middleware\VerifyCsrfToken на моем собственном пакете без везения.

Да, это на самом деле довольно просто и также описано в документах, расположенных здесь , но для простоты вот ответ, который предоставляется для вашей справки:

  <?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 = [ 'stripe/*', ]; } 

Нет, нет. Средство промежуточного уровня всегда выполняется, если предусмотрено в app/Http/Kernel.php $middleware вашего app/Http/Kernel.php .

Это хорошая вещь. Вы хотите дать разработчикам полный контроль над тем, хотите ли они включить проверки безопасности в своем приложении.

Если вам действительно нужно исключение на маршруте, вы можете просто попросить вручную добавить исключение в класс VerifyCsrfToken .

Насколько я знаю, массив $except в классе VerifyCsrfToken никоим образом не доступен в Service Container. Даже если бы вы могли найти способ создания экземпляра промежуточного ПО, ядро ​​просто создаст новый экземпляр классов промежуточного программного обеспечения. Поскольку список исключений не является статическим, это невозможно изменить.