Я использовал 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 . Здесь вы также можете найти небольшое сообщение в блоге об этом.
Надеюсь, это поможет.