【发布时间】:2019-03-20 07:30:37
【问题描述】:
当点击 Header.vue 中的 onclick 函数时,我得到了 this error,但是当我从 Register.vue 的表单中删除带有 csrf_token 的输入标签时,注册表单将按原样显示应该的。
虽然在通过 POST 提交输入后,我留下了标准的 419(抱歉,您的会话已过期。请刷新并重试。)Laravel 屏幕。
我确定 419 屏幕是由于缺少 CSRF 令牌造成的,所以我的最后一个问题是如何在 vue.js 中实现它?
我正在使用 Vue.js 和 Laravel 创建一个 SPA,在我的 Register.vue 组件中呈现 onclick 在站点顶部我添加了 CSRF 令牌,如下所示:
<template>
<form id="registerForm" class="register-container" action="registerUser" method="post">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<div class="register-container__form">
<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
<input class="mdl-textfield__input" name="email" type="text">
<label class="mdl-textfield__label">Email</label>
</div>
.
.
.
</template>
弹出注册表的onclick函数在Header.vue:**
<template>
.
.
.
<nav class="mdl-navigation">
<a class="mdl-navigation__link" href="" v-on:click.prevent="registerPopUp()">Sign In</a>
</nav>
<register-form/>
</template>
<script>
import Register from './Register.vue'
export default {
components: {
'register-form': Register
},
methods: {
registerPopUp: () => {
let loginForm = document.getElementById('loginForm');
let registerForm = document.getElementById('registerForm');
loginForm.style.display = "none";
registerForm.style.display = "block";
window.onclick = (e) => {
if(e.target == registerForm)
registerForm.style.display = "none";
}
}
}
}
</script>
【问题讨论】:
-
我不认为您应该能够在 .vue 文件中使用刀片。所以请为您的令牌考虑这个答案stackoverflow.com/questions/39938284/…
-
您是从 js 提交表单还是只是进行常规表单提交?
标签: laravel web laravel-5 vue.js csrf