我不喜欢当CSRF令牌过期时CI默认行为。例如,当用户长时间显示登录表单并最终提交时,会出现带有错误消息的丑陋空白页。
我想办法解决这个问题,有人告诉我扩展安全类,并覆盖其 csrf_show_error()方法,如下所示:
class MY_Security extends CI_Security {
public function __construct()
{
parent::__construct();
}
public function csrf_show_error()
{
// comment out the default action
// show_error('The action you have requested is not allowed.');
// add redirect actions here
// I'd like to use some helper function here like redirect()
}
}
问题是我不能,或者我不知道如何从这里访问库和帮助程序,以便执行重定向。我不能在这里使用 get_instance()函数,因为我收到错误。那么,我还能做些什么呢?或者还有其他更好的选择来阻止显示此错误页面吗?
答案 0 :(得分:3)
其中一种方法是将Security
类扩展为重定向到同一页面。
CodeIgniter用户指南 - Extending Core Class
对How to handle an expired CSRF token after a page is left open
的好解释答案 1 :(得分:2)
对于想要更改网页视图的用户,您可以在error_general.php
中修改文件/application/errors/error_general.php
。 CodeIgniter使用该文件显示一般错误,如CSRF错误。
问候:)。