Codeigniter 编码点火器csrf保护错误:

Codeigniter 编码点火器csrf保护错误:,codeigniter,csrf,protection,Codeigniter,Csrf,Protection,我正在使用ci2。我已在配置文件中启用CSRF保护: $config['csrf_protection'] = TRUE; $config['csrf_token_name'] = 'sitename'; $config['csrf_cookie_name'] = 'sitename'; $config['csrf_expire'] = 7200; 我只使用Codeigniter表单。在提交表单或登录时,有时会出现错误“您无权执行此操作” 如果我刷新并再试一次,

我正在使用ci2。我已在配置文件中启用CSRF保护:

$config['csrf_protection']   =  TRUE;
$config['csrf_token_name']   =  'sitename';
$config['csrf_cookie_name']  =  'sitename';
$config['csrf_expire']       =  7200; 
我只使用Codeigniter表单。在提交表单或登录时,有时会出现错误“您无权执行此操作”


如果我刷新并再试一次,那么一切正常。为什么会发生这种情况?

之所以会发生这种情况,是因为您的CSRF令牌过期,这是正确的过程,将CSRF令牌过期时间从7200秒增加到与您的需求更相关的时间(7200/60/60=2小时)

请在此处详细阅读CSRF为您所做的工作:

您可以在cookie过期时触发JS确认框,要求用户延长会话。如果你想继续使用CSRF,我认为这是你能得到的最优雅的解决方案。

这是因为令牌过期。您可以简单地扩展核心安全类并自动刷新页面


可能是您在提交表单之前花了7200多秒。。。?或者您是否使用Ajax提交表单?因为我在CodeIgniter中处理ajax表单和csrf时遇到问题。。。我就是这样回答你的问题的……:)问题确实是由于CSRF cookie即将过期。在使用AJAX时解决这一问题并不困难,但当用户刚刚处于非活动状态时,这会有点痛苦。