Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 23.08.2019 23:28:52

Не работает запрос, вывводит ошибку TokenMismatchException in compi...

При отправки запроса из формы, не выводится содержимое переменной $_POST.
Выводит ошибку:

TokenMismatchException in compiled.php line 3227:
1. in compiled.php line 3227
2. at VerifyCsrfToken->handle(object(Request), object(Closure))
3. at call_user_func_array(array(object(VerifyCsrfToken), 'handle'), array(object(Request), object(Closure))) in compiled.php line 9963

app/Http/routes.php

Route::post('/comments', function () {
    print_r($_POST);
});

public/form.html

<form action="/comments" method="POST">
    Имя:
    <input type="text" name="name" ><br>
    Комментарий:<br>
    <textarea name="text"></textarea><br>    
    <input type="submit" value="Добавить">
</form>

Поискал в чем проблема и все ссылается на csrf. Что это, для чего это? Туда смотрю?
Предложили сделать так, но не работает:

<input type="hidden" name="_token" value="{{ csrf_token() }}">

Я полный новичок, только начал изучать.

Не в сети

#2 24.08.2019 01:57:43

Re: Не работает запрос, вывводит ошибку TokenMismatchException in compi...

Нашел решение:

app/Http/Middleware/VerifyCsrfToken.php

<?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 = [
        //тут прописываем маршруты которые хотим исключить
        'comments/*',
    ];
}

Не в сети

#3 25.08.2019 11:58:03

stsepelin
Откуда: Estonia
Сообщений: 43

Re: Не работает запрос, вывводит ошибку TokenMismatchException in compi...

Csrf токен используется для предотвращения атак на ваш сайт. Добавлять рут на добавление комментариев в исключение - ужасная затея. Вкратце, вы должны при каждом пост запросе отправлять уникальный токен.
https://laravel.com/docs/5.8/csrf

Не в сети

#4 25.08.2019 13:05:05

Re: Не работает запрос, вывводит ошибку TokenMismatchException in compi...

На самом деле надо было не отказываться от посредника CSRF, а добавить в форму поле с токеном, чтобы посредник мог его использовать. Если внезапно и это не поможет, значит проблема в сессии, потому что для проверки токена нужна сессия. Без сессии вам вообще ВСЁ придется поотключать smile

Короче, старайтесь придерживаться стандартных путей, а не громоздить костыли. Отступать от шаблонов могут только гуру 80-го уровня.

Не в сети

Подвал раздела