Как исправить ошибку CSRF токена Laravel - PullRequest
0 голосов
/ 19 мая 2019

В одном из моих проектов в Laravel я реализовал функциональность CRUD, и в представлениях для каждой функции я поместил токен csrf и запрос в зависимости от функции, то есть PUT для обновления чего-либо. У меня две проблемы, к сожалению, от этого. Похоже, что @csrf и @method (PUT) помещают в виде простого текста на html-странице, вместо того, чтобы фактически добавлять соответствующие функции на страницу. Также, например, на странице редактирования, когда я пытаюсь редактировать существующую запись в базе данных, появляется ошибка исключения несоответствия токена, и я не знаю, почему.

Редактировать действие в контроллере:

public function update(Request $request, $id)
{
    $blog = Blog::find($id);
    $blog->title = $request->title;
    $blog->content = $request->content;
    $blog->update();

    return redirect()->route('blog_path', ['blog' => $blog]);
}

Форма на edit.blade.php:

<form action="{{ route('update_blog_path', ['blog' => $blog->id]) }}" method="POST">
  <input type="hidden" name="_method" value="PUT">
  @csrf

  @method('PUT')

  <div class="form-group">
    <label for="title">Title</label>
    <input type="text" name="title" class="form-control" value="{{ $blog->title}}">
  </div>

  <div class="form-group">
    <label for="content">Content</label>
    <textarea name="content" rows="10" class="form-control">{{$blog->content}}</textarea>
  </div>

  <div class="form-group">
    <button type="submit" class="btn btn-outline-primary">Edit Blog Post</button>
  </div>
</form>

Ошибка несоответствия токена также не позволяет мне войти в систему и зарегистрироваться со стандартной аутентификацией Laravel, поэтому мне было интересно, является ли это простым исправлением этой ошибки или есть что-то большее, чем это?

1 Ответ

2 голосов
/ 20 мая 2019

Решение # 1 - добавить метатег:

<meta name="csrf-token" content="{{ csrf_token() }}">

Решение # 2 - добавить скрытый ввод, как это:

<input type="hidden" name="_token" value="{{ csrf_token() }}">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...