Мне не нравится, как 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.
С уважением :).