Странное несоответствие токенов с Laravel и Vue

Два маршрута, которые я настроил для тестирования этого:

POST     | forums/thread/create                 | game.forums.create      | Biolumites\Http\Controllers\Game\Forums\CreateController@postCreate          | web
POST     | register                             | game.auth.register      | Biolumites\Http\Controllers\Game\Auth\RegisterController@postRegister        | web

Оба контроллера существуют.

Маршрут регистрации работает точно так, как требуется.

Я использую Vue-маршрутизатор для отображения текущего представления:

<template>
<div class="content__inner">
<div class="forums" v-if="categories">

<!-- Heading -->
<div class="forums__heading">
<div class="lg-12 md-12 sm-12 column column__first">
<h2 class="forums__heading__title">{{ translations.title }}</h2>
</div>
<div class="clearfix"></div>
</div>

<!-- Content -->
<div class="forums__content">
<div class="forums__content__item">
<form method="POST">
<!-- Title -->
<label class="form__label" for="title">{{ translations.forms.title.title }}</label>
<input class="form__input" name="title" v-model="form.title">
<!-- Board -->
<label class="form__label" for="board_id">{{ translations.forms.board.title }}</label>
<select class="form__input" name="board_id" v-model="form.board">
<optgroup v-for="category in categories" :label="category.title">
<option v-for="board in category.boards" :value="board.id">{{ $parent.layout.boards[board.slug] }}</option>
</optgroup>
</select>
<!-- Content -->
<label class="form__label" for="content">{{ translations.forms.content.title }}</label>
<tinymce id="content" name="content" v-model="form.description" :options='options'></tinymce>
<br>
<!-- Submit -->
<input class="button background-transparent-green" type="submit" :value="translations.forms.submit" @click.prevent="submit('/forums/thread/create', '/forums/board/' + board_slug)">
</form>
</div>
</div>

</div>
</div>
</template>

<script>

import form from '../../mixins/form.js';
import tinymce from '../../mixins/tinymce.js';
import translations from '../../mixins/translations.js';

export default {

mixins: [form, tinymce, translations],

data() {
return {
form: {
title: null,
board: parseInt(this.$route.query.board),
description: null,
},
board_slug: null,
categories: null,
}
},

created() {
this.fetch_categories();
},

methods: {

/**
* Fetch all the categories.
*/
fetch_categories()
{
axios.get('/api/forums/categories').then((response) => {
this.categories = response.data;
});
},

/**
* Fetch the slug of the currently selected board.
*/
fetch_board_slug()
{
for(var category_index = 0, len = this.categories.length; category_index < len; category_index++)
{
for(var board_index = 0, len = this.categories[category_index].boards.length; board_index < len; board_index++)
{
if(this.form.board == this.categories[category_index].boards[board_index].id)
{
this.board_slug = this.categories[category_index].boards[board_index].slug;
}
}
}
},

},

watch: {

/**
* Watch the categories.
*/
'categories':
{
handler: function()
{
this.fetch_board_slug();
}
},

'form.board':
{
handler: function()
{
this.fetch_board_slug();
}
},

},

}

</script>

Когда я отправляю форму, используя /register маршрут, я попадаю на маршрут, как и ожидалось (с несанкционированным ответом, когда я вошел в систему). Однако, когда я отправляю ТОЧНУЮ ту же форму, ТОЧНО таким же образом я получаю ошибку 500 и несоответствие токена с /forums/thread/create маршрут.

Глядя на ответные куки XSRF-TOKEN передается на /register маршрут, но не на /forums/thread/create маршрут.

Почему это происходит и как я могу это исправить, чтобы остановить это?

1

Решение

Задача ещё не решена.

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

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

По вопросам рекламы [email protected]