Как заставить работать laravel, vue сессия csrf - PullRequest
0 голосов
/ 22 января 2020

Laravel формам нужен csrf для работы

Если я создаю spa, одностраничное приложение с vue + laravel, так что мой шаблон laravel содержит только пустые html и тело, а пользователь не фактически вообще не обновляют sh страницу в течение многих часов работы с приложением, (страница не ссылается sh, потому что все с ajax)

Как мне сохранить сеанс входа в систему живой ? Как мне заставить работать csrf? Или я могу отключить это? Приложение ничего не делает без входа в систему.

1 Ответ

1 голос
/ 22 января 2020

Если вы используете ax ios с Vue2 для ваших ajax запросов, csrf уже доступен в bootstrap. js, вы можете увидеть там эту строку

let token = document.head.querySelector('meta[name="csrf-token"]');

Если вы хотите чтобы настаивать только на вашем ajax, тогда вы бы поместили эту строку в свой смонтированный крюк.

mounted() {
    this.csrfToken = document.querySelector('meta[name="csrf-token"]').content
},

этот csrfToken должен быть атакован в ваших формах, как этот

<form :method="method.toUpperCase() == 'GET' ? 'GET' : 'POST'">
    <input-hidden :value="csrfToken" name="_token"/>

    <input-hidden
        v-if="['GET', 'POST'].indexOf(method.toUpperCase()) === -1"
        :value="method"
        name="_method"
    />

    <!--
        This hidden submit button accomplishes 2 things:
            1: Allows the user to hit "enter" while an input field is focused to submit the form.
            2: Allows a mobile user to hit "Go" in the on-screen keyboard to submit the form.
    -->
    <input type="submit" class="absolute invisible z-0">

    <slot/>
</form>

для хорошего примера этого. проверьте это токен csrf

Примечание: Пожалуйста, не отключайте токен csrf, потому что это только ваш способ защитить ваши запросы к серверу.

...