Laravel 4 AJAX CSRF令牌不匹配(带_token)

时间:2014-12-02 04:22:09

标签: laravel-4

我试图通过frozennode/administrator包的自定义实现对我的模型进行简单(软)删除。每当我通过ajax访问我的路线时,应用程序都会抛出TokenMismatchException

我已尝试使用cookie配置中设置的filesession个驱动程序。

我已确认使用ajax请求提交_token。完全注释掉csrf过滤器可以让我成功删除记录。我使用的是开箱即​​用的csrf过滤器。

我也使用优秀的Sweet Alert插件,虽然这似乎并不相关。

routes.php文件:

//CSRF protection in forms
Route::group(array('before' => 'csrf'), function()
{

    //Delete Item
    Route::post('{model}/{id}/delete', array(
        'as' => 'admin_delete_item',
        'uses' => 'Frozennode\Administrator\AdminController@delete'
    ));

...

刀片模板:

<a href="" class="btn btn-danger" id="delete-item-button" data-token="{{ csrf_token()}} ">
    <i class="fa fa-trash"></i>
    <span>
        &nbsp;Delete
    </span>
</a>

使用Javascript:

请原谅我的狡猾$ .post是相关的。

$('#delete-item-button').on('click', function (e) {
e.preventDefault();

var token = $(this).data('token');

swal({
    title: "Delete this record?",
    text: "There's no undo!",
    type: "warning",
    showCancelButton: true,
    confirmButtonColor: "#DD6B55",
    confirmButtonText: "Yes, delete it!",
    closeOnConfirm: false
}, function () {
    $.post(
        window.location.pathname + "/delete",
        {"_token" : token},
        function(){
            swal({
                title: "Deleted!",
                text: "The record has been deleted.",
                type: "success"
            },
                function () {
                    window.location.href = 'http://www.example.com'
                })},
        "json"
        );
    });
});

任何帮助或指导都会非常赞赏。

谢谢!

0 个答案:

没有答案