2011-08-09 104 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,我認爲這是最優雅的解決方案。