Laravel 5.2中的CsrfToken elfinder ckEditor

时间:2016-03-25 08:52:00

标签: javascript ajax laravel ckeditor elfinder

我的问题是,在上传文件时会显示以下错误。我该如何解决这个问题?

这是我在模板中的代码:

<script src="/vendor/unisharp/laravel-ckeditor/ckeditor.js"></script>
                    <script src="/vendor/unisharp/laravel-ckeditor/adapters/jquery.js"></script>
                    <textarea name="content" class="form-control my-editor"></textarea>
                    <script>
                        $('textarea.my-editor').ckeditor({
                            filebrowserImageBrowseUrl: '{!! route('elfinder.ckeditor') !!}',
                        });
                    </script>

enter image description here

我不知道为什么,虽然再次有令牌操作无法执行且错误量显示

ckeditor文件:

$().ready(function() {
        var elf = $('#elfinder').elfinder({
// set your elFinder options here
            <?php if($locale){ ?>
            lang: '<?= $locale ?>', // locale
            <?php } ?>
            <?php if($csrf){ ?>
            data: { _token: '<?php echo csrf_field(); ?>' },
            <?php } ?>
            url: '<?= route('elfinder.connector') ?>', // connector URL
            getFileCallback : function(file) {
                window.opener.CKEDITOR.tools.callFunction(funcNum,              file.url);
                window.close();
            }
        }).elfinder('instance');
    });

这不起作用:(

2 个答案:

答案 0 :(得分:2)

Laravel 5在web中间件中添加了VerifyCSRF令牌。它基本上做的是在用户提交表单时注入要验证的令牌以防止跨站点请求伪造(CSRF)攻击。

您可以在app/Http/Kernel.php中将其停用,但不建议这样做。

其他选项是在表单中包含令牌,以便在发出请求时发送给服务器。

在表单中添加此内容。

{{ csrf_field() }}

它将生成以下HTML块:

<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">

请参阅:Laravel docs

答案 1 :(得分:0)

更改elfinder选项,以便将其他POST数据发送到&#34; customData&#34;。

$().ready(function () {
            var elf = $('#elfinder').elfinder({
                // set your elFinder options here
                customData: { 
                    _token: '<?php echo  csrf_token() ?>'
                },
                dialog: {width: 900, modal: true, title: 'Select a file'},
                resizable: false,
                commandsOptions: {
                    getfile: {
                        oncomplete: 'destroy'
                    }
                },
                getFileCallback: function (file) {
                    $('<?php echo $input_id?>').summernote('editor.insertImage',files.url);
                }
            }).elfinder('instance');
        });

您的选项是数据,将其更改为customData。 也可以使用csrf_token()

发送csrf令牌值