Я пишу веб-приложение, используя GWT и GAE (Java).Я хорошо знаю GAE, особенно версию Python;Я новичок в GWT и Java-версии GAE.
Я попытался настроить свое приложение так, чтобы пользователю приходилось входить в систему для доступа;from app.yaml.
application: myapp
version: 1
runtime: java
welcome_files:
- index.jsp
- index.html
handlers:
- url: /admin/*
# secure: always
login: admin
- url: /MyApp.html
# secure: always
login: required
Похоже, что генерируется файл web.xml с ограничениями доступа на главной странице:
<security-constraint>
<web-resource-collection>
<url-pattern>/MyApp.html</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>*</role-name>
</auth-constraint>
</security-constraint>
Как и ожидалось, при запуске под ant devmode яТребуется поддельный вход в систему, когда я впервые захожу на страницу.
Однако я хотел, чтобы у пользователя был URL для выхода из системы.
Во-первых, кажется, нет способа сделать это.на клиенте, что кажется странным: как может быть, что мне нужно попасть на сервер, чтобы сгенерировать URL, чтобы пользователь мог выйти из системы?Однако, не видя альтернативы, я написал для этого RPC-сервис.
Я использовал элемент HTML в GWT, чтобы поместить ссылку на страницу;похоже, это работает, когда я помещаю ссылки на поиски в Google и т. д. Когда я помещаю URL-адрес для выхода из системы (который был создан для того, чтобы связать пользователя с главной страницей, требующей входа в систему) (то, что я делал раньше с Python-версией GAE безвсе, что связано с Ajax) вместо того, чтобы снова попросить войти в систему (и затем посмотреть главную страницу), я просто получаю 404. Not foundпоэтому я фактически скомпилировал приложение и запустил его как скомпилированное приложение GAE (dev_appserver.sh), точно такая же проблема.) Я перехожу на главную страницу своего приложения и службы RPC, которую я написал, чтобы получить URL-адрес выхода для пользователя, который отвечает, что пользователь не вошел в систему.
Учитывая конфигурацию app.yaml (которая, кажется, правильносоздать файл web.xml), чтобы пользователь даже не мог видеть страницу, если он не вошел в систему, как это возможно?даже случиться?Даже если пользователь правильно вышел из системы (на странице, когда он говорит 404), как я могу перейти на главную страницу своего приложения и при этом не войти в систему?
Является ли это эффектом Ajax, когда пользовательВыйдет из системы, но страница сообщает об этом (уже была обработана, когда пользователь вошел в систему), а затем RPC подключается к серверу и обнаруживает, что пользователь вышел из системы?Если это так, тогда кажется довольно бессмысленным ограничивать доступ в app.yaml / web.xml, поскольку мне также приходится проверять его каждый раз, когда я получаю вызов RPC в любом случае, верно?(Я полагаю, что конфигурация app.yaml может сохранить несколько обращений к серверу при первом посещении страницы пользователем?)
Я использую последнюю версию OS X 10.60,8 (x86).Мой браузер Chrome: 16.0.912.63 (официальная сборка 113337)
$ java -version
java version "1.6.0_29"
Java(TM) SE Runtime Environment (build 1.6.0_29-b11-402-10M3527)
Java HotSpot(TM) 64-Bit Server VM (build 20.4-b02-402, mixed mode)
Я использую gwt-2.4.0.