激活 CSRF 保护时出错

Error on activating CSRF protection

我在设置 $config['csrf_protection'] = TRUE; 时收到以下错误消息:

Fatal error: Class 'CI_Controller' not found in /opt/codeigniter/system/core/CodeIgniter.php on line 369 A PHP Error was encountered Severity: Error Message: Class 'CI_Controller' not found Filename: core/CodeIgniter.php Line Number: 369 Backtrace:

我正在关注 manual,但我看不出它的明确原因。

顺便说一下,只有当我尝试(通过 F5)重新加载使用 POST 提交的表单时才会发生这种情况。我知道会出现错误,但我认为它应该显示在错误页面(或其他内容)中,并且可能是另一种错误。

谁能帮帮我?

确保您已正确命名文件并 class 命名 https://www.codeigniter.com/user_guide/general/styleguide.html#file-naming

https://www.codeigniter.com/user_guide/general/styleguide.html#class-and-method-naming

对于 CSRF

我发现最好在完成域后为您的项目创建一个 vHost,例如示例

example.com

config.php

$config['cookie_prefix']    = 'ci_';
$config['cookie_domain']    = '.example.com';
$config['cookie_path']      = '/';
$config['cookie_secure']    = FALSE;
$config['cookie_httponly']  = FALSE;


$config['csrf_protection'] = TRUE;
$config['csrf_token_name'] = 'csrf_test_name';
$config['csrf_cookie_name'] = 'csrf_cookie_name';
$config['csrf_expire'] = 7200;
$config['csrf_regenerate'] = TRUE;
$config['csrf_exclude_uris'] = array();

并使用表单助手 functions 为我修复了它。

我的问题是我修改了 views/errors/error_general.php 以动态化从 CI 实例获取变量的报告响应,然后,不知何故,来自 CSRF 保护的错误响应配置错误。

显然,此文件看不到 CI 个实例,因此无法在其中使用实例引用。

已通过将文件 views/errors/error_general.php 恢复为原始版本来解决此问题,但我仍在研究自定义它的方法。

感谢关注