为Codeigniter设置授权模块uLogin http://ulogin.ru/constructor.html
但是,如果启用CSRF保护,则会导致错误("The action you have requested is not allowed."
)。
如果保护功能关闭,一切正常。
如果启用了保护,则在记录并自动刷新后,当前页面将失败。
显然,由于差异通过了令牌。如何解决这个问题?
答案 0 :(得分:1)
CodeIgniter CSRF的设置可能会导致您的问题。在/config/config.php中,设置$config['csrf_expire']
确定CSRF cookie有多长时间。例如,如果该设置为300(5分钟),并且您刷新了登录页面但未尝试登录10分钟,则会收到错误"The action you have requested is not allowed."
,因为CSRF cookie已过期5分钟前。
基本上,该错误可能来自CodeIgniter CSRF cookie过期。加载页面时会设置该Cookie,因此如果页面中的表单位于$config['csrf_expire']
设置的时间以上,则必须在提交表单之前刷新页面,否则您将收到该错误。为避免经常出现错误,请尝试增加$config['csrf_expire']
的大小。
此外,如果您使用CodeIgniter form helper,将自动生成隐藏的CSRF输入。
答案 1 :(得分:0)
我不熟悉链接的“模块”,但您需要在登录表单中添加一个隐藏字段,其中包含CSRF验证数据,如下所示:
<input type="hidden"
name="<?=$this->security->get_csrf_token_name();?>"
value="<?=$this->security->get_csrf_hash();?>"
/>