2016-03-17 7 views
2

У меня есть это в Laravel 4.2 Route::when('*', 'csrf', ['post']);, который вставляет проверку csrf на все сообщения, как я могу отправить Larevel 5.2?Прикрепите промежуточное ПО ко всему методу

Это мой собственный CSRF, без использования по умолчанию обеспечивают по Laravel:

<?php 
namespace App\Http\Middleware; 
use Closure; 
use Input; 
class VerifyCsrfToken1 
{ 
    public function handle($request, Closure $next) 
    { 
     $token = $request->ajax() ? $request->header('X-CSRF-Token') : $request->input('_token'); 
     if ($request->session()->token() === $token) { 
      return $next($request); 
     } 
     throw new TokenMismatchException; 
    } 
} 

Я создал свой личный CSRF промежуточное программное обеспечение, но я не знаю, как прикрепить их по запросу все почтовые

I хотите прикрепить его ко всем сообщениям через фасад Route. (Файл routes.php)

Спасибо :)

ответ

2

Laravel 5 проводов до промежуточного слоя немного по-другому, вы не будете делать это через Request фасада.

Вы хотите сначала зарегистрировать свое промежуточное ПО как глобальное. Откройте app/Http/Kernel.php и добавьте его в глобальный массив $middleware.

protected $middleware = [ 
    VerifyCsrfToken1::class 
    ... 

Затем в вашем классе промежуточного программного обеспечения проверьте, обрабатывает ли он запрос POST. Если нет, попросите его просто передать запрос, не делая ничего.

if($request->method() != "POST") { 
    // Move right along 
    return $next($request); 
} 

Side Примечание: Как вы отметили Laravel имеет VerifyCsrfToken промежуточное программное обеспечение, запеченный в уже. Я бы посоветовал попытаться приспособить это, если это возможно.

+0

Да, конечно, но мне нужно прикреплять на всех маршрутах POST «автоматически» без необходимости делать каждый раз -> промежуточное программное обеспечение ...-> промежуточное программное обеспечение и т. Д. – Davide

+1

@ Davide Я думаю, что вы неправильно понимаете связующее ПО, так оно и должно работать. Вы устанавливаете серию классов промежуточного программного обеспечения, которые могут проверять каждый запрос и принимать решения. – jszobody

+0

@Davide Вы думаете, что Laravel 4, но Laravel 5 переделал это значительно. Создайте свои собственные классы промежуточного программного обеспечения, следуя шаблону существующих классов промежуточного программного обеспечения! – jszobody

Смежные вопросы