防止在Codeigniter中显示默认的CSRF错误页面

时间:2013-01-18 20:14:07

标签: php codeigniter csrf

我不喜欢当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()函数,因为我收到错误。那么,我还能做些什么呢?或者还有其他更好的选择来阻止显示此错误页面吗?

2 个答案:

答案 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错误。

问候:)。