2011-08-09 34 views
2

我使用CI 2.我已经启用CSRF保护配置文件:笨CSRF保护错误:

$config['csrf_protection'] = TRUE; 
$config['csrf_token_name'] = 'sitename'; 
$config['csrf_cookie_name'] = 'sitename'; 
$config['csrf_expire']  = 7200; 

我只用笨形式。有时我会在提交表单或登录时发生错误“您无权执行此操作”。

如果我刷新并再试一次,那么每件事情都可以正常工作。这是为什么发生?

+0

那么它可能是你花了比7200秒多提交表单之前...? 或者你使用Ajax提交表单?因为我在处理代码点火器中的ajax表单和csrf时遇到了问题......这就是我在您的问题上着陆的原因...... :) – Piero

+0

问题确实是由于CSRF cookie过期导致的。使用AJAX时并不难,但当用户刚刚处于不活动状态时,这有点痛苦。 –

回答

2

你可以做一个JS确认框触发时cookie的到期时间,让用户延长他的会话。如果你想继续使用CSRF,我认为这是最优雅的解决方案。