GroceryCRUD添加,编辑按钮不会使笨CSRF保护工作时(GroceryCRUD add, e

2019-10-22 10:08发布

我使用GroceryCRUD 1.5.0 笨 2.2.0。

当启用CodeIgniter的内部CSRF保护带:

$config['csrf_protection'] = TRUE;

application/config/config.php ,那么GroceryCRUD自动生成的动作按钮(编辑,视图)和链接(添加)不工作了。

看来,CSRF令牌不沿Ajax调用(使用Firebug确认)通过。 它可以使用与GroceryCRUD这个笨功能?

Answer 1:

我终于成功地解决我的问题。 有两种选择:

最简单的办法

组:

$config['grocery_crud_dialog_forms'] = false;

application/config/grocery_crud.php

此方法适用未启用CSRF保护(即,它可以被设置为true ,以产生更优雅的形式),但设置时,如果没有代码修改在JavaScript做失败。

优雅的方式

如果我们要使用:

$config['grocery_crud_dialog_forms'] = true;

application/config/grocery_crud.php有可爱的形式,则:

  1. 包括jquery.cookie插件与形式的网页

  2. 此代码添加到您的JS文件自动神奇地插入所有的Ajax POST调用CSRF令牌:

 $(document).ready(function() { var csrf_token= $.cookie('csrf_cookie_name'); $.ajaxSetup({ data: { 'csrf_test_name' : csrf_token } }); }); 

我希望这会帮助别人。



Answer 2:

万一有人有相同的错误:对于CI 3.0.1和1.5.1 GroceryCRUD,Cookies 正确的AJAX请求发送,但是由于令牌的变化,只有第一个请求会工作。

要始终使用相同的标记,设置(在application/config/config.php ):

$config['csrf_regenerate'] = FALSE;

编辑:手动供参考: http://www.codeigniter.com/user_guide/libraries/security.html#cross-site-request-forgery-csrf



文章来源: GroceryCRUD add, edit buttons not working when enabling CodeIgniter CSRF protection