Я знаю о свойствах $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. Даже если бы вы могли найти способ создания экземпляра промежуточного ПО, ядро просто создаст новый экземпляр классов промежуточного программного обеспечения. Поскольку список исключений не является статическим, это невозможно изменить.