Как сохранить строку запроса после входа в систему (с использованием `userService` Google) в движке приложения с использованием Java?

Я разрабатываю приложение на Java на GAE (Google App Engine). У меня есть JSP, в котором я использовал Google userService для аутентификации через учетную запись Gmail, это работает нормально, и пользователи могут входить в систему, используя учетную запись Gmail.

Я использовал userService.createLoginURL(request.getRequestURI()) для создания URL-адреса входа.

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

Однако, когда пользователь не вошел в систему и открывает URL-адрес (имеющий строку запроса), он перенаправляет его на страницу входа, а после входа предполагается перейти на эту конкретную страницу, но после входа строка запроса теряется и он просто переводит пользователя на страницу приветствия, которая не предназначена для этого случая.

Как я могу этого избежать? Есть ли обходной путь для этого или это просто ограничение App Engine?


person Raghvendra Kumar    schedule 19.08.2014    source источник
comment
Если вы укажете, что страницы требуют входа в систему в файле web.xml, он автоматически авторизует пользователя, а затем отправит вас на страницу с вашими исходными параметрами: developers.google.com/appengine/docs/java/config/   -  person Ryan    schedule 19.08.2014
comment
Спасибо за ссылку. Я просмотрел статью, однако в ней нет примера того, как принудительно ввести вход в web.xml. Я новичок, поэтому был бы очень признателен за небольшой пример того, как указать ограничение входа в web.xml в движке приложения.   -  person Raghvendra Kumar    schedule 19.08.2014
comment
Вам нужно добавить весь раздел ‹security-constraint› в web.xml, в комментариях недостаточно места, чтобы показать полный пример. Скопируйте весь блок ‹security-constraint› и обновите его до того, что есть на вашей странице.   -  person Ryan    schedule 19.08.2014
comment
Я понимаю, что вы не можете привести здесь полный пример, и я также знаю, что мы можем указать ограничение безопасности для URL-адресов, но как мне сделать вход в систему обязательным через это. Предположим, у меня есть страница welcome.jsp, а другая — securepage.jsp, а последняя доступна только в том случае, если у вас есть правильная строка запроса, прикрепленная к URL-адресу, который теряется после входа в систему.   -  person Raghvendra Kumar    schedule 19.08.2014
comment
Я бы поставил ограничение безопасности на securepage.jsp. Если параметр запроса отсутствует, выполните response.sendRedirect(welcome.jsp).   -  person Ryan    schedule 19.08.2014
comment
Спасибо @Bruyere. Это сработало, ограничение безопасности.   -  person Raghvendra Kumar    schedule 20.08.2014


Ответы (1)


Строка запроса может быть сохранена, если мы применим ограничение безопасности для URL-адресов, которое также позаботится о входе в систему, необходимом для доступа к странице или URL-адресу.

<security-constraint> <web-resource-collection> <web-resource-name>Any Name</web-resource-name> <url-pattern>/page or url you want to apply the security</url-pattern> </web-resource-collection> <auth-constraint> <role-name>*</role-name> </auth-constraint> </security-constraint>

person Raghvendra Kumar    schedule 20.08.2014