laravel 5.1 auth csrf令牌不匹配

时间:2015-08-14 06:56:43

标签: php laravel authentication laravel-5 csrf

在做出任何判断之前,我会阅读与我的问题相关的所有相关问题,但没有一个问题得到解决。 所以这是我的问题,当我使用laravel 5.1的身份验证工具并且想要注册用户时csrf令牌在我请求显示我的注册表单时产生两次,而当我将表单数据发布到auth / register post route并且这个原因时我收到一个csrf令牌不匹配异常。这是我的注册表格标记

NetFSMountURLCancel

6 个答案:

答案 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);
    }
})