2017-08-05 59 views
1

内laravel CSRF场我有一个包含一个形式的VUE模板:)定义如何推荐一个VUE模板

<form id="logout-form" :action="href" method="POST" style="display: none;"> 
     {{ csrf_field() }} 
</form> 

在laravel,形式必须有一个csrf_field(。但在vue组件中,语句{{ csrf_field() }}意味着我在我的vue实例中有一个名为csrf_field的方法,我正在调用它。

如何在这种情况下添加csrf_field?

+2

您可以发送CSRF令牌头'头['X -CSRF-TOKEN']'。并将其存储到您的应用程序的元标记中,稍后使用'document.querySelector'获取它。 –

回答

4

如果你在你的头的元标签(图)令牌

<meta name="csrf-token" content="{{ csrf_token() }}"> 

您可以访问使用

data() { 
     return { 
      csrf: document.querySelector('meta[name="csrf-token"]').getAttribute('content') 
     } 
} 

单词和形式,并结合中添加一个隐藏的输入字段在CSRF属性值是这样的:

<form id="logout-form" :action="href" method="POST" style="display: none;"> 
    <input type="hidden" name="_token" :value="csrf"> 
</form> 
0

这是我如何使用它:

{!! csrf_field() !!} 

把它放在你的表格中。

,并在你的Vue脚本,你可以简单地

methods: { 
       submitForm: function(e) { 

        var form = e.target || e.srcElement; 
        var action = form.action; 

获取表单和他的行动,那么该数据值将是:

data: $(form).serialize() 

这工作完全为我和所有没有给出错误。

0

如果您使用爱可信与Vue2你的Ajax请求你可以添加以下(在你的bootstrap.js文件通常):

window.axios.defaults.headers.common = { 
    'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').getAttribute('content'), 
    'X-Requested-With': 'XMLHttpRequest' 
};