Kohana3 ссылается на предыдущий контроллер?


есть ли способ в Kohana3 ссылаться на предыдущий контроллер/действие.

Позвольте мне объяснить немного лучше:
У меня есть базовый контроллер, который проверяет, вошел ли пользователь в систему с помощью модуля аутентификации.
Если пользователь переходит на страницу, которую ему не разрешено просматривать, он перенаправляется на экран входа в систему.

Теперь я хотел бы (когда он поет) вернуться на страницу, которая активировала контроллер входа в систему.
Я хотел передать ее как сегмент URI, но проблема в том, что контроллер может содержать символы «/».

Пример:

  • пользователь переходит на mysite.com/user/profile
  • он перенаправляется на mysite.com/login (необходимо передать пользователь/профиль)
  • после успешного входа пользователь перенаправляется обратно на mysite.com/user/profile

person ZolaKt    schedule 30.03.2011    source источник
comment
Отличная идея, намного лучше, чем испортить URI. Опубликуйте свой комментарий в качестве ответа, чтобы вы могли получить свой знак принятия :)   -  person ZolaKt    schedule 31.03.2011


Ответы (1)


Я делаю это, постоянно обновляя значение сеанса для пользователей, которые не вошли в систему.

Session::instance()->set('redirect', Request::instance()->uri());

Затем, после успешного входа в систему, вы можете перенаправить следующим образом:

Request::instance()->redirect(Session::instance()->get('redirect', URL::base());

Я не тестировал код, но концепция есть. Если значение не установлено, перейдите к перенаправлению на домашнюю страницу.

Будьте внимательны и проверьте URL-адрес перенаправления. Этого не должно быть, но, поскольку мы имеем дело с пользовательскими данными, всегда есть небольшой шанс, что что-то плохое может вернуться. Последнее, что вам нужно, это быть перенаправленным на зараженный вирусом веб-сайт после входа в систему.

person The Pixel Developer    schedule 30.03.2011