Как перенаправить на запрошенный URI после аутентификации с использованием Zend_Auth? - PullRequest
5 голосов
/ 12 ноября 2008

Я использую простую Zend_Auth установку для аутентификации пользователей для одного из моих приложений, используя проверку в методе preDispatch () в плагине контроллера . Когда анонимные пользователи переходят на

/users/view/id/6

например, они должны быть перенаправлены на вышеуказанный URI после аутентификации.

Каков наилучший способ сделать это? Я бы предпочел не хранить $_SERVER['REQUEST_URI'] в сеансе. Лично я нашел бы хранение всего объекта Zend Request для самого чистого решения, но я не уверен, разумно ли это, и должен ли я использовать этот подход.

Есть мысли?

Ответы [ 2 ]

1 голос
/ 12 ноября 2008

Перенаправление или переадресация на LoginController не может быть оптимальным способом для перевода не авторизованного пользователя на страницу входа. Вместо этого в preDispatch вы можете получить объект $ request и изменить его, выполнив следующие действия.

$request->setActionName('someaction');
$request->setControllerName('somecontroller');

На данный момент ваш первоначальный запрос поддерживается, но на странице отображается страница входа. Затем вы можете изменить свой контроллер входа в систему, чтобы проверить, является ли текущее местоположение запроса контроллером входа или что-то еще. Если это что-то еще (исходный запрос) при успешном входе в систему, отправьте их на эту страницу.

1 голос
/ 12 ноября 2008

У нас была та же проблема, и мы действительно сохранили URI запроса в переменной сеанса. Если вы не поместите какой-либо конкретный, не сериализуемый объект в Zend Request, я думаю, что также будет нормально его сохранить.

Однако это зависит от ожидаемой пропускной способности. Сериализация таких объектов, как Zend Request, может оказаться не самой лучшей идеей, если у вас большой веб-сайт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...