我正在使用CI 2.我在配置文件中启用了CSRF保护:
$config['csrf_protection'] = TRUE;
$config['csrf_token_name'] = 'sitename';
$config['csrf_cookie_name'] = 'sitename';
$config['csrf_expire'] = 7200;
我只使用Codeigniter表单。有时我会收到错误“您无权执行此操作”提交表单或登录。
如果我刷新并再试一次,那么每件事情都可以。为什么会这样?
答案 0 :(得分:2)
您可以在Cookie到期时触发JS确认框,要求用户延长其会话。我认为如果您想继续使用CSRF,这是最优雅的解决方案。
答案 1 :(得分:1)
这种情况发生是因为您的CSRF令牌过期,正确的过程,将CSRF令牌到期时间从7200秒增加到与您的需求更相关的东西(7200/60/60 = 2小时)。
请阅读CSRF为您做的更多信息:
http://en.wikipedia.org/wiki/Cross-site_request_forgery
答案 2 :(得分:0)
这是因为令牌过期而发生的。您可以简单地扩展核心安全级别并自动刷新页面。