Scala безопасность веб-приложений

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

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

У вас есть опыт работы с фреймворками безопасности Scala или с помощью Spring Security/Apache Shiro в контексте Scala?

Ответ 1

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

Ответ 2

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

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

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

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

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