В настоящее время я работаю над сайтом фреймворка zend, используя ACL.
ACL работает и использует БД для хранения privaliges. То, что я сделал до сих пор, заключается в том, что в preDispatch я фиксирую, куда пользователь хочет перейти, и если им нужно войти в систему, чтобы попасть туда, страница отобразит форму входа. Я также захватил, если пользователь отправил форму и сохранил данные (данные о местоположении и форме). На данный момент проблем нет.
Пользователь отправляет форму для входа, и затем я проверяю, есть ли у меня местоположение для отправки на них, опять никаких проблем здесь, это работает.
Тем не менее, я хочу, чтобы иметь возможность отправлять исходные данные формы, теперь они аутентифицированы – единственная проблема заключается в том, что если я перенаправляю их на страницу, вызов:
$this->getRequest()->isPost()
терпит неудачу, поскольку это не почтовый запрос.
Я могу перенаправить пользователя на страницу с успешным входом в систему, а в preDispatch установить $ _POST исходные данные, это работает, поскольку оригинальный POST все еще стоит, это работает, но я не думаю, что это правильный способ сделать это – специально URL-адрес – очевидно, что страница отображается правильно, форма была отправлена правильно, но URL-адрес процесса входа в систему.
Очевидно, я мог бы $this->getRequest()->isPost()
от использования $this->getRequest()->isPost()
но поскольку есть большие суммы, которые нуждаются в изменении, я надеялся не делать этого.
То, как это делается обычно (это видно на многих сайтах), было бы хранить данные формы и запрашивать действие в сеансе, а затем перенаправить пользователя на страницу входа. Когда авторизация авторизована, вы читаете сеанс для любого ожидающего действия, перезагружаете форму и заполняете ее данными из сеанса (должным образом очищая любое ожидающее действие от сеанса после этого). Пользователю просто нужно снова нажать «Отправить».
Другой способ сделать это – использовать HttpClient и отправить данные в виде POST с ним.