Преобразование beforeFilter (4. *) в Middleware (5. *) в Laravel

Недавно я пытался научиться работать с Laravel. Большинство уроков находятся в 4.*, но это нормально. Реализация / преобразование некоторых устаревших функций до сих пор идут хорошо. Я узнал эту версию 5.* осудил beforeFilter как в:

public function __construct() {
$this->beforeFilter('csrf', array('on' => ['post', 'put', 'patch', 'delete']));
}

Я хочу преобразовать это в версию 5.*, Из того, что я понимаю, это можно сделать с помощью Middleware, но я понятия не имею, как мне достичь того же результата. Я прочитал документы, но это не помогло мне понять тему.

Там уже есть файл промежуточного программного обеспечения под названием VerifyCsrfToken.php в app/Http/Middleware папка с этим кодом:

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 = [
//
];
}

Кто-нибудь может мне помочь настроить это и помочь мне лучше понять Middleware? Спасибо.

0

Решение

Поскольку защита CSRF — это то, с чем поставляется Laravel 5, это фактически то, что она проверяет по умолчанию в Illuminate\Foundation\Http\Middleware\VerifyCsrfToken класс, который вы видите в расширенном VerifyCsrfToken.php,

Если вы посмотрите в handle метод этого класса, вы увидите, что первое условие, которое сделает проверку успешной, вызывает isReading метод, который выглядит так:

/**
* Determine if the HTTP request uses a ‘read’ verb.
*
* @param  \Illuminate\Http\Request  $request
* @return bool
*/
protected function isReading($request)
{
return in_array($request->method(), ['HEAD', 'GET', 'OPTIONS']);
}

Это эквивалентно тому, что ваш beforeFilter в Laravel 4, что позволяет выполнить запрос для «прочитанных» глаголов и автоматически проверить токен, если используются какие-либо другие глаголы, такие как post, put, patch, delete,

Если вы проверите Защитная документация Laravel CSRF вы увидите, что есть один абзац, который гласит:

Вам не нужно вручную проверять токен CSRF по запросам POST, PUT или DELETE. Промежуточное ПО HTTP VerifyCsrfToken проверит, что токен во входных данных запроса соответствует токену, сохраненному в сеансе.

Так что вам больше не нужно иметь этот фильтр. Что касается понимания того, как Middleware работает в Laravel, читая весь Документация по промежуточному ПО HTTP сделает большую работу, чтобы помочь вам понять, как это работает.

1

Другие решения

Других решений пока нет …