1

設定ファイルで設定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');
4

1 に答える 1

0

まず、CSRFを理解する必要があります。

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

その投稿から:

「Securityクラスは、HTTPリクエストごとにCSRFトークンの一意の値を生成します。オブジェクトが作成されると、トークンの名前と値が設定されます。」

おそらく起こっていること(私はjqGridに精通していません)は、それぞれformが独自のCSRFトークンを取得している可能性があります。または、すべてのフォームにトークンが1つしかない可能性があります。いずれにせよ、CodeIgniterはHTTPリクエストとレスポンスごとに1つのトークンを期待しています。基本的に、ページを作成する最初のリクエストとデータのPOSTでループを閉じる必要があります。

したがって、jqGridコードとCIビューを掘り下げて、出力が必要に応じてCSRFトークンを生成することを確認する必要がある場合があります。

更新:上記のブログのコメントの1つに、Ajax CSRFの問題へのリンクがありました:http://aymsystems.com/ajax-csrf-protection-codeigniter-20

于 2012-09-12T05:22:39.263 に答える