Scala网络应用程序安全

10

在Scala Web应用程序中,安全框架的好选择是什么?我们想尝试Scala Web开发,但还没有找到好的Scala Web应用程序安全框架。

从Java方面来看,我至少知道Spring Security和Apache Shiro。

您是否有使用Scala Web应用程序安全框架或在Scala环境中使用Spring Security / Apache Shiro的经验?

2个回答

4

Lift内置了安全性,正如Lift的作者David Pollak在这里所描述的。


谢谢你的回答,但我也在寻找通用方法,这些方法不依赖于Web框架。 - Timo Westkämper

4
我在一个小的Scala Web应用程序中使用了Spring Security。当我开始学习Scala时,我尝试使用完整的Java堆栈:Spring MVC + Spring + Spring Security + Hibernate + BlazeDS(我还在这个项目中使用了Flex作为前端)。现在我可以说这是一个非常好的和积极的经验。总的来说,问题是Scala如何与Spring和Hibernate集成。我不得不在实体中使用@BeanProperty@BeanInfo和Java集合。
但是,从Spring安全性方面我没有遇到任何真正的问题。它按预期工作。我只记得有一个小问题是关于Spring AOP的:服务类通过BlazeDS将其方法发布给Flex应用程序。我还使用Spring Security的对象ACL(使用<security:intercept-methods /><security:protect />)对它们进行了保护。所有这些东西都是AOP魔法所能做到的。因此,我注意到了这种奇怪的Spring AOP行为 - 如果您的类实现了一些接口,那么它将使用JDK的代理来实现它们并委托所有调用给目标,但是如果类没有实现任何接口,则它将使用cglib来扩展您的类并委托每个方法调用。问题是我的公共服务类没有实现任何接口,但是AOP没有正常工作。原因是ScalaObject接口,它被所有Scala类实现。因此,我为所有公共服务创建了新的traits以解决这个问题(我没有找到任何配置Spring AOP的方法 - 似乎这种行为是硬编码的)。
因此,您可以看到使用Scala和Spring Security并不是一个问题。我相信使用Apache Shiro应该更容易,因为它声称完全独立于容器或环境(我听说可以在Spring之外使用Spring Security,但我也听说这非常痛苦)。总的来说,在Scala中,您可以实现Java能够实现的一切。问题在于最终代码的美观性/惯用性/纯度/无副作用。
顺便说一下,有一个新项目将Lift与Apache Shiro集成:lift-shiro。在这里,您还可以找到关于它的小博客文章
希望这有所帮助。

感谢您的回答。关于ScalaObject代理的问题真的很有用。 - Timo Westkämper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接