Запретить отображение страницы ошибок CSRF по умолчанию в Codeigniter

Мне не нравится, как CI ведет себя по умолчанию, когда токен CSRF истек. Например, когда пользователь долгое время отображает форму входа в систему и, наконец, отправляет ее, появляется эта уродливая пустая страница с сообщением об ошибке.

Я попросил способы обойти это, и кто-то сказал мне продлить класс безопасности и переопределить его метод 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 () здесь, потому что получаю сообщение об ошибке. Итак, какие еще куты я делаю? Или есть ли другой лучший вариант, чтобы не показывать эту страницу ошибок?

Основные классы, такие как CI_Security , создаются перед помощниками и библиотеками – нет возможности использовать эти функции, как в другом месте приложения CI.

Вам придется дублировать функциональность в классе, используя собственные PHP-функции, такие как header() что не слишком сложно, если вы просто хотите перенаправить на более качественную страницу с ошибкой.

Один из способов сделать – расширить класс Security чтобы перенаправить на ту же страницу.

Руководство пользователя CodeIgniter – расширение основного класса

Хорошее объяснение того, как обращаться с истекшим токеном CSRF после того, как страница оставлена ​​открытой

Для тех, кто хочет изменить просмотр страницы, вы можете отредактировать файл error_general.php в /application/errors/error_general.php . CodeIgniter использует этот файл для отображения общих ошибок, например CSRF Errors.

С уважением :).