Zend ACL - как обработать запрос через ajax / jquery к защищенным страницам - PullRequest
0 голосов
/ 18 ноября 2010

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

Я использую Zend ACL, чтобы указать, какие страницы защищены и требуют аутентификации. Например, если «UploadVideo.php» является защищенной страницей - когда пользователь нажимает на ссылку для доступа к этой странице - он перенаправляется на страницу входа и после входа перенаправляется обратно на страницу UploadVideo.php. Так что об этом все позаботились и прекрасно работают.

Теперь на другой странице - у меня есть что-то вроде кнопки «ГОЛОСОВАТЬ». Пользователь может голосовать только в том случае, если он вошел в систему.

Дело 1 Когда пользователь вошел в систему - он нажимает кнопку голосования - я использую Jquery для вызова действия следующим образом: $.post('/video/vote', {video_id:video_id}, function(data) { if(data=="OK") ..... } Теперь / видео / голосование является защищенным ресурсом, и поскольку пользователь вошел в систему - вызывается действие голосования, которое увеличивает количество голосов и возвращает сообщение «ОК», и страница динамически обновляется с новым счетом голосов.

Дело 2 Пользователь не вошел в систему - он нажимает на кнопку голосования - поскольку страница защищена - страница входа возвращается через вызов ajax в переменной «data» В идеале, когда пользователь не вошел в систему - вызов ajax не должен происходить - пользователь должен быть перенаправлен на страницу входа - после входа он должен быть перенаправлен на действие / video / голосования, которое увеличит количество голосов - и наконец отправили обратно на страницу с кнопкой голосования

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

Я не знаю, ясно ли я объяснил проблему.

Спасибо за ваше время

1 Ответ

1 голос
/ 18 ноября 2010

Для этого может быть специфический для Zend способ, о котором я не знаю, но я не могу придумать ничего более простого (и более чистого), чем

  • Заполнить переменную Javascript logged_in в зависимости от того, вошел ли пользователь в систему или нет

  • Выполните проверку для logged_in, когда пользователь нажимает кнопку голосования;предложить перенаправить, если они не

  • Перенаправить на страницу входа с целевой переменной, содержащей URL текущей страницы (для это , я уверен,Специфический путь Zend Framework существует)

  • очевидно, сохраните все проверки на стороне сервера.Это просто для удобства.

...