Безопасность веб-приложения Scala - PullRequest
10 голосов
/ 04 апреля 2011

Что такое хороший выбор фреймворка для веб-безопасности в веб-приложении Scala. Мы хотели бы попробовать веб-разработку Scala, но пока не смогли найти хороших фреймворков для безопасности веб-приложений Scala.

Со стороны Java я знаю, по крайней мере, Spring Security и Apache Shiro.

Есть ли у вас опыт работы со средами безопасности веб-приложений Scala или с Spring Security / Apache Shiro в контексте Scala?

Ответы [ 2 ]

4 голосов
/ 04 сентября 2011

Я использовал Spring Security в небольшом веб-приложении Scala.Я создал его, когда начал изучать Scala, и попытался использовать полный стек Java: Spring MVC + Spring + Spring Security + Hibernate + BlazeDS (я также использовал Flex в этом проекте для внешнего интерфейса).Теперь я могу сказать, что это был действительно хороший и позитивный опыт.Как правило, вопрос в том, насколько хорошо Scala интегрируется с Spring и Hibernate.Мне пришлось использовать @BeanProperty или @BeanInfo и java-коллекции в сущностях.

Но я не сталкивался с какими-либо реальными проблемами со стороны весенней безопасности.Это работало как ожидалось.Я могу вспомнить только одну незначительную проблему с Spring AOP: сервисные классы публиковали свои методы через BlazeDS в приложении flex.Я также защитил их объектными ACL-списками Spring Security (с <security:intercept-methods /> и <security:protect />).Все это, конечно, возможно благодаря магии АОП.Итак, я заметил поведение этой проводной Spring AOP - если ваш класс реализует некоторые интерфейсы, то он будет использовать прокси-серверы JDK для их реализации и делегировать все вызовы цели, но если класс не реализует никаких интерфейсов, то он будет использовать cglib для расширения вашего класса.и делегировать каждый вызов метода.Проблема в том, что мои классы общедоступных сервисов не реализуют никаких интерфейсов, но AOP не работал должным образом.Причина в том, что интерфейс ScalaObject реализован всеми классами scala.Поэтому я создал новые черты для всех государственных служб, чтобы решить эту проблему (я не нашел способа настроить Spring AOP - похоже, это поведение жестко задано).

Итак, как вы можете видеть, это не проблемаиспользовать Spring Security со Scala.Я считаю, что использовать Apache Shiro должно быть еще проще, поскольку он претендует на полную независимость от контейнера или среды (я слышал, что можно использовать Spring Security вне Spring, но я также слышал, что это довольно болезненно).Обычно в Scala вы можете архивировать все, что можете на Java.Вопрос в том, насколько красивым / идиоматическим / чистым / без побочных эффектов будет выглядеть код.

Кстати, есть новый проект, который интегрирует Lift с Apache Shiro: lift-shiro . Здесь вы также можете найти небольшое сообщение в блоге об этом.

Надеюсь, это поможет.

4 голосов
/ 04 апреля 2011

Лифт имеет встроенную систему безопасности, как описано здесь Дэвидом Поллаком, автором Lift.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...