Как заставить работать laravel, vue session csrf

Формы Laravel нуждаются в csrf для работы

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

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


person gray_15    schedule 22.01.2020    source источник
comment
stackoverflow.com/questions/37806762/   -  person first    schedule 22.01.2020
comment
github.com/laravel/airlock   -  person Jerodev    schedule 22.01.2020


Ответы (1)


Если вы используете axios с 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, потому что это единственный способ защитить ваши запросы к серверу.

person Qonvex620    schedule 22.01.2020
comment
Если мое приложение vuea является одностраничным, и страница действительно никогда не обновляется, нужно ли мне, и если да, то как мне обновить новый csrfToken в моей форме? - person gray_15; 23.01.2020