Kohana3 ссылка на предыдущий контроллер?
есть ли способ в Kohana3 ссылаться на предыдущий контроллер / действие?
Позвольте мне объяснить немного лучше:
У меня есть базовый контроллер, который проверяет, вошел ли пользователь в систему с помощью модуля Auth.
Если пользователь переходит на страницу, которую ему запрещено просматривать, он перенаправляется на экран входа в систему.
Теперь я хотел бы (когда он поет) вернуться на страницу, которая активировала контроллер входа в систему.
Я хотел передать его как сегмент URI, но проблема в том, что контроллер может содержать символы "/".
Пример:
- пользователь идет в
mysite.com/user/profile
- его перенаправляют на
mysite.com/login
(необходимо передать пользователя / профиль) - после успешного входа в систему пользователь перенаправляется обратно в
mysite.com/user/profile
1 ответ
Я делаю это, постоянно обновляя значение сеанса для пользователей, которые не вошли в систему.
Session::instance()->set('redirect', Request::instance()->uri());
Затем, после успешного входа в систему, вы можете перенаправить так:
Request::instance()->redirect(Session::instance()->get('redirect', URL::base());
Я не тестировал код, но концепция есть. Если значение не установлено, перейдите к перенаправлению на домашнюю страницу.
Пожалуйста, убедитесь, что вы осторожны и подтвердите URL перенаправления. Так не должно быть, но, поскольку мы имеем дело с пользовательскими данными, всегда есть небольшой шанс, что что-то плохое может вернуться. Последнее, что вы хотите - это быть перенаправленным на зараженный вирусом веб-сайт после входа в систему.