在做出任何判断之前,我会阅读与我的问题相关的所有相关问题,但没有一个问题得到解决。 所以这是我的问题,当我使用laravel 5.1的身份验证工具并且想要注册用户时csrf令牌在我请求显示我的注册表单时产生两次,而当我将表单数据发布到auth / register post route并且这个原因时我收到一个csrf令牌不匹配异常。这是我的注册表格标记
NetFSMountURLCancel
答案 0 :(得分:1)
只需在表单中添加csrf标记:
<input type="hidden" name="_token" value="{{csrf_token()}}"/>
它对我有用。
答案 1 :(得分:1)
假设您的网络服务器已经具有对会话目录的写入权限,在我的情况下 &app; / storage / framework / sessions /&#39; 。
执行:
$symfony_version = \Symfony\Component\HttpKernel\Kernel::VERSION;
echo $symfony_version; // this will return version; **o/p:3.0.4-DEV**
答案 2 :(得分:0)
有几种可能性......
1)如果您在开始<?php
标记前面有任何空格,则可能会导致此错误(特别是如果您正在使用AJAX)。所以只需仔细检查一下,确保文件中<head>
之前没有任何内容。
2)如果您尝试通过AJAX提交此表单数据,则文档建议传递CSRF令牌,如下所示:
将此元标记添加到<meta name="csrf-token" content="{{ csrf_token() }}">
:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
然后在AJAX调用中执行此操作:
this
答案 3 :(得分:0)
如果您使用laravel 5.1只需添加{{ csrf_field() }}
就行了
答案 4 :(得分:0)
如果您使用Form
的打开和关闭标记,则会自动添加csrf标记{!! Form::open(['action' => '/auth/register', 'class' => 'ui large form']) !!}
-- Form stuff here --
{!! Form::close() !!}
答案 5 :(得分:0)
我希望这会有所帮助
设置元标记如下
<meta name="csrf-token" content="{{ csrf_token() }}">
然后请求如下
$.ajax({
data: {data1:'data1',data2:'data2'},
url: '/your/url/goes/here',
type: 'POST',
beforeSend: function (request) {
return request.setRequestHeader('X-CSRF-Token', $("meta[name='csrf-token']").attr('content'));
},
success: function(response){
console.log(response);
}
})