【问题标题】:Codeigniter with jqGrid: use csrf_token带有 jqGrid 的 Codeigniter:使用 csrf_token
【发布时间】:2012-05-17 16:46:05
【问题描述】:

如果在配置文件中我将csrf_token 设置为false 并且一切正常。但是当csrf_tokentrue 时,我的网格只能从数据库中获取数据,而不能更新或其他任何东西。

我正在浏览此站点上有关 Сodeigniter+jqGrid 的帖子,但仍然不明白我应该做什么。

我可以得到csrf_token 的值,但它应该包含在哪里?

var lastsel;  
var addl_params =
{
    ci_csrf: $.cookie('ci_csrf_token')
};

$("#grid").jqGrid({
    url:'url to script',
    datatype: "json",
    mtype: 'GET',
    colNames:['id', 'Nickname', 'Breed'],
    colModel:[
        {name:'id',index:'id', width:55, sortable:false, editable:false, 
            editoptions:{readonly:true,size:10}}, 
        {name:'nickname',index:'nickname', width:100,editable:true, 
            edittype:"text"},
        {name:'breed',index:'breed', width:100,editable:true, edittype:"text"},
    ],
    jsonReader : {
        root:"rows",
        page: "page",
        total: "totalpages",
        records: "records"
    },
    rowNum:10,
    rowList:[10,20,30],
    pager: jQuery('#gridpager'),
    sortname: 'nickname',
    viewrecords: true,
    sortorder: "asc",
    caption:"Cats",

    onSelectRow: function(id){
        if(id && id!==lastsel){
            jQuery('#grid').jqGrid('restoreRow',lastsel);
            jQuery('#grid').jqGrid('editRow',id,true,null, null);
            lastsel=id;
        }
    },
    editurl:"edit-url"
}).navGrid('#gridpager');

【问题讨论】:

    标签: codeigniter jqgrid csrf-protection


    【解决方案1】:

    首先要了解CSRF:

    http://www.beheist.com/index.php/en/blog/csrf-protection-in-codeigniter-2-0-a-closer-look

    来自那个帖子:

    "Security 类为 CSRF 令牌生成一个唯一值 每个 HTTP 请求。创建对象时,对象的名称和值 令牌已设置。”

    可能发生的事情(我不熟悉 jqGrid)是每个 form 都可能获得它自己的 CSRF 令牌。或者,所有表格可能只有一个标记。无论哪种方式,CodeIgniter 都希望每个 HTTP 请求和响应都有一个令牌。基本上,您需要在创建页面的第一个请求和数据的 POST 时关闭循环。

    因此,您可能需要深入研究 jqGrid 代码和 CI 视图,以确保您的输出根据需要生成 CSRF 令牌。

    更新:上面博客中的一个 cmets 有一个指向 Ajax CSRF 问题的链接:http://aymsystems.com/ajax-csrf-protection-codeigniter-20

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-24
      • 1970-01-01
      • 2011-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多