Требовать входа пользователя в GWT с помощью web.xml

Я разрабатываю приложение с GAE и GWT, в котором пользователь должен войти в свою учетную запись Google при доступе к сайту. Итак, я определил следующее в файле web.xml...

<security-constraint>
    <web-resource-collection>
        <url-pattern>/index.html</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>*</role-name>
    </auth-constraint>
</security-constraint>

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


person Dominic    schedule 13.12.2011    source источник


Ответы (1)


Я бы предложил попробовать использовать шаблон URL для *, чтобы все ваши ресурсы были безопасными, и, во-вторых, добавить тег web-resource-name к значению «все», как показано во фрагменте кода ниже.

И я предполагаю, что у вас уже есть сопоставление сервлета с сервисом и т. д.

<security-constraint>
<web-resource-collection>
    <web-resource-name>all</web-resource-name>
    <url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
    <role-name>*</role-name>
</auth-constraint>
</security-constraint>  
person Vishal Biyani    schedule 13.12.2011
comment
Но это повлияет и на другие сервлеты, верно? Потому что у меня есть сервлет, который получает POST-запросы с устройства Android. Есть ли у вас какие-либо предложения, как авторизовать телефон? - person Dominic; 13.12.2011
comment
Если доступ к телефону осуществляется через браузер, то это будет так же, как аутентификация на ПК. Но если приложение для Android обращается, я не уверен, как будет работать вход в систему. Я уверен, что есть способ, но не знаю, как, вы можете проверить на форуме Android. Также вы можете отделить URL-адреса, к которым обращается Android, и не применять к ним аутентификацию, если это ваше требование. - person Vishal Biyani; 13.12.2011
comment
Клиент Android также должен быть авторизован с помощью учетной записи Google. Так что было бы очень хорошо, если бы я мог отправить авторизованный запрос POST. Я собираюсь спросить некоторых сотрудников Google и попробовать ваше решение завтра, но я почти уверен, что оно сработает. - person Dominic; 14.12.2011
comment
Спасибо, это работает. Проблема заключалась в том, что я установил шаблон URL-адреса ProjectName.html. Это работало на сервере разработки, потому что URL-адрес Projectname.html?codesrv= или некоторые другие параметры. Но на appspot URL-адрес просто projectname.appspot.com - person Dominic; 15.12.2011