如何使工作laravel, vue session csrf

How to make work laravel, vue session csrf

Laravel 表单需要 csrf 才能工作

如果我使用 vue+laravel 制作 spa,单页应用程序,这样我的 laravel 模板只包含空的 html 和正文, 并且用户在使用应用程序的许多小时内实际上根本没有刷新页面, (页面不刷新,因为一切都在ajax)

如何让登录会话保持活动状态? 如何让 csrf 工作?或者我可以禁用它吗? 如果不先登录,该应用程序将不执行任何操作。

如果您将 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 token

注意:请不要禁用 csrf 令牌,因为它是保护您对服务器的请求的唯一方式。