Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
启用CodeIgniter CSRF保护时,GroceryCRUD添加、编辑按钮不工作_Codeigniter_Csrf Protection_Grocery Crud - Fatal编程技术网

启用CodeIgniter CSRF保护时,GroceryCRUD添加、编辑按钮不工作

启用CodeIgniter CSRF保护时,GroceryCRUD添加、编辑按钮不工作,codeigniter,csrf-protection,grocery-crud,Codeigniter,Csrf Protection,Grocery Crud,我正在使用1.5.0和2.2.0 启用CodeIgniter的内部CSRF保护时: $config['csrf_protection'] = TRUE; 在application/config/config.php中,GroceryCRUD自动生成的操作按钮(编辑、查看)和链接(添加)不再工作 似乎CSRF令牌没有在Ajax调用中传递(通过Firebug确认)。可以将此CodeIgniter功能用于GroceryCRUD 我终于设法解决了我的问题。有两种选择: 简单的方法: 设置: 在appl

我正在使用1.5.0和2.2.0

启用CodeIgniter的内部CSRF保护时:

$config['csrf_protection'] = TRUE;
application/config/config.php
中,GroceryCRUD自动生成的操作按钮(编辑、查看)和链接(添加)不再工作


似乎CSRF令牌没有在Ajax调用中传递(通过Firebug确认)。可以将此CodeIgniter功能用于GroceryCRUD

我终于设法解决了我的问题。有两种选择:

简单的方法

设置:

application/config/groundry_crud.php

此选项在未启用CSRF保护的情况下运行良好(即,可以将其设置为
true
,以生成更优雅的表单),但如果在javascript中未进行任何代码修改,则设置此选项将失败

优雅的方式

如果我们想使用:

$config['grocery_crud_dialog_forms'] = true;
application/config/screery_crud.php
中创建可爱的表单,然后:

  • 在表单的页面中包含

  • 将此代码添加到JS文件中,以便在所有ajax POST调用中自动神奇地插入CSRF令牌:

  • $(文档).ready(函数(){
    var csrf_token=$.cookie('csrf_cookie_name');
    $.ajaxSetup({
    数据:{
    “csrf\u测试\u名称”:csrf\u令牌
    }
    });	
    
    });我终于设法解决了我的问题。有两种选择:

    简单的方法

    设置:

    application/config/groundry_crud.php

    此选项在未启用CSRF保护的情况下运行良好(即,可以将其设置为
    true
    ,以生成更优雅的表单),但如果在javascript中未进行任何代码修改,则设置此选项将失败

    优雅的方式

    如果我们想使用:

    $config['grocery_crud_dialog_forms'] = true;
    
    application/config/screery_crud.php
    中创建可爱的表单,然后:

  • 在表单的页面中包含

  • 将此代码添加到JS文件中,以便在所有ajax POST调用中自动神奇地插入CSRF令牌:

  • $(文档).ready(函数(){
    var csrf_token=$.cookie('csrf_cookie_name');
    $.ajaxSetup({
    数据:{
    “csrf\u测试\u名称”:csrf\u令牌
    }
    });	
    
    });以防有人出现相同的错误:对于CI 3.0.1和GroceryCRUD 1.5.1,cookie与AJAX请求一起正确发送,但是由于令牌发生更改,只有第一个请求才能工作

    要始终使用相同的令牌,请设置(在
    application/config/config.php
    中):


    编辑:供参考的手册:

    以防有人出现相同的错误:对于CI 3.0.1和GroceryCRUD 1.5.1,cookie与AJAX请求一起正确发送,但是由于令牌更改,只有第一个请求才能工作

    要始终使用相同的令牌,请设置(在
    application/config/config.php
    中):

    编辑:参考手册:

    $config['csrf_regenerate'] = FALSE;