Laravel 5必须在KendoUI Grid中发送包含所有请求的令牌

时间:2015-03-14 08:53:49

标签: php laravel kendo-ui kendo-grid laravel-5

我必须在我的kendo网格中发送_token和每个网格操作(读取除外),否则我会收到令牌不匹配错误:

...
transport: {
            read: {
                url: '/core/income-grid/read',
                dataType: 'json',
                type: 'get'
            },
            update: {
                url: '/core/income-grid/update',
                dataType: 'json',
                type: 'post',
                data: function(data){
                    data._token = $('#incomeGrid').data('csrf');
                    return data;
                }
            },
            create: {
                url: '/core/income-grid/create',
                dataType: 'json',
                type: 'post',
                data: function(data){
                    data._token = $('#incomeGrid').data('csrf');
                    return data;
                }
            },
            destroy: {
                url: '/core/income-grid/destroy',
                dataType: 'json',
                type: 'post',
                data: function(data){
                    data._token = $('#incomeGrid').data('csrf');
                    return data;
                }
            }
        },
...

有没有办法绕过这个并且仍然有csrf令牌提供的保护?

1 个答案:

答案 0 :(得分:2)

如果没有传递令牌,您就无法在Laravel中获得CSRF保护。

但是,根据Kendo UI Documentation,有一个名为transport.parameterMap的方法允许操作请求参数。这应该允许您将令牌作为参数包含在一个地方的所有非读取请求中,而不必为所有操作单独指定它:

transport: {
    ...,
    parameterMap: function(data, type)
    {
        if (type !== "read")
            data._token = $('#incomeGrid').data('csrf');

        return data;
    }
}