2016-07-27 67 views
0

我知道我是StackOverflow的初学者,但是我遇到了一个难题。
好吧,在商业上,我在laravel有令牌的麻烦。有时候,一切顺利的话,但我有错误:
jQuery的2.2.4.min.js:4 POST http://localhost:8000/checkabsence/delete 500(内部服务器错误)在使用令牌的情况下,Ajax中的Laravel TokenMismatchException

我的JS: $.ajax({ method:"post", url:postDeleteAbsence, data:{ _token:token, absenceid: absenceid } }).done(function(msg) { alert('deleted'); });

我'100%肯定我正在传递令牌和消息。 var token = '{{ Session::token() }}';

我的路线:我的令牌,我认为设置

Route::post('/checkabsence/delete', [ 
'uses' => '[email protected]', 
'as' => 'postDeleteAbsence', 
'middleware' => 'auth' 
]); 

我的控制器:

public function postDeleteAbsence(Request $request) { 
    //code 
} 

我laravel的版本:5.2.41

在我的上项目我创建了多个Ajax请求,一切运行良好,现在我得到了这个错误... 注意t帽子有时我也得到非阿贾克斯post请求令牌不匹配(例如对第五个请求它会引起令牌不匹配错误)

我希望你能帮助我,因为我真的不知道该怎么做或什么我做错了...

//新闻
我注意到,我在我的数据库中有令牌不同于我在我的ajax请求和其他地方使用的令牌。

路线: routes

+0

尝试'{{csrf_token()}}',而不是'{{会话令牌::()}}' – jaysingkar

+0

我试过,没有什么变化:( – mrforexify

+0

是它喜欢它第一次工作,然后它没有? – jaysingkar

回答

0

我有同样的问题,因为你有。在我的情况下,原因是用户登录时的身份验证。我是用Auth::login($user, true);,而不是使用Auth::login($user);

0

你必须使用AJAX时设置该标记作为标题。

$.ajaxSetup({ 
    headers: { 
     'X-CSRF-TOKEN': {{ csrf_token() }} 
    } 
}); 

编辑

尝试添加令牌是这样的:

$.ajax({ 
    method: 'post', 
    url: postDeleteAbsence, 
    data: { 
     absenceid: absenceid 
    }, 
    headers: { 
     'X-CSRF-TOKEN': '<?php echo csrf_token(); ?>' 
    } 
}).done(function(msg) { 
    alert('deleted'); 
}); 
+0

试过这个解决方案,仍然是同样的问题 – mrforexify

+0

但你能告诉我这是可以的remember_token数据库与当前显示的令牌不同,我登录了我的控制台? – mrforexify

+0

@mrforexify * remember_token *与此tiken完全不同,它用于CSRF保护请求,另一个用于用户登录会话 – TheFallen

相关问题