Ответ 1
Существуют две основные стратегии:
- защищать точки входа;
- защищать удаленные службы.
Защита точек входа
Самый простой способ - ограничить доступ к файлам html/js, сгенерированным GWT, с помощью обычных инструментов безопасности веб-приложений:
- Spring Безопасность;
- ограничения web.xml.
Это может позволить вам иметь, например, AdminEntryPoint
и UserEntryPoint
.
Защита удаленных служб
Если вышеуказанного решения недостаточно, вы можете копать глубже. Я сделал это с помощью Spring Безопасность. Я не нашел 100% -ный чистый способ интеграции Spring Безопасность с GWT, поэтому я добавил немного клея. Вкратце:
- создал аннотацию
@AllowedRoles
, которая перечисляет роли пользователей, которым разрешен доступ к этому сервисному методу; - создан
UserDetailsService
, который позволяет проверять текущего пользователя (подробнее см. securityContextHolder javadoc); - создал аспект Spring, который соответствует всем методам, аннотированным с аннотацией, указанной выше. Он использует службу для извлечения ролей текущего пользователя и выбрасывает исключенное исключение, чтобы сигнализировать о незаконном доступе;
- изменил все методы обслуживания, чтобы выбросить исключение безопасности.