我正在使用CI 2。我已在配置文件中启用CSRF保护:
$config['csrf_protection'] = TRUE;
$config['csrf_token_name'] = 'sitename';
$config['csrf_cookie_name'] = 'sitename';
$config['csrf_expire'] = 7200;
我只使用Codeigniter表单。有时我会在提交表单或登录时收到错误“您未被授权执行此操作”。
如果我刷新并再试一次,那么一切都工作正常。为什么会发生这种情况?
2条答案
按热度按时间r8xiu3jd1#
你可以做一个JS确认框,在cookie过期时触发,要求用户延长会话。我认为如果你想继续使用CSRF,这是最优雅的解决方案。
acruukt92#
发生这种情况是因为您的CSRF令牌到期,这是正确的过程,将CSRF令牌到期时间从7200秒增加到与您的需求更相关的时间(7200 / 60 / 60 = 2小时)。
在这里阅读更多关于CSRF为您做的事情:
http://en.wikipedia.org/wiki/Cross-site_request_forgery