2012-05-09 11 views
1

設定ファイルでcsrf_tokenfalseに設定するとすべてが機能します。しかし、csrf_tokentrueの場合、私のグリッドはデータベースからのみデータを取得できますが、更新やその他のデータは取得できません。codeigniter with jqGrid:use csrf_token

私はこのサイトのС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'); 

答えて

0

まずそれがCSRF理解する必要があります。そのポストから

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

を:

「セキュリティクラスは、各HTTPリクエスト でCSRFトークンのためのユニークな値を生成し、オブジェクトが作成されると、 の名前と値が設定されます。

formはおそらく自分自身のCSRFトークンを取得している可能性があります(私はjqGridに慣れていません)。または、すべてのフォームに対して1つのトークンしか存在しない可能性があります。いずれにしても、CodeIgniterはHTTP要求と応答ごとに1つのトークンを要求します。基本的には、ページを作成する最初のリクエストとデータのPOSTでループを閉じる必要があります。

したがって、必要に応じて出力がCSRFトークンを生成するように、jqGridコードとCIビューを調べる必要があります。

更新http://aymsystems.com/ajax-csrf-protection-codeigniter-20

:ブログのコメントの一つは、上記のAjax CSRFの問題へのリンクを持っていました