Scala Web应用程序安全性

时间:2011-04-04 11:52:49

标签: security web-applications scala

Scala Web应用程序中Web安全性的哪些好框架选择。我们想尝试Scala Web开发,但还没有找到好的Scala Web应用程序安全框架。

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

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

2 个答案:

答案 0 :(得分:4)

Lift已根据Lift的作者David Pollak所描述的here提供安全保护。

答案 1 :(得分:4)

我在小型Scala Web应用程序中使用了Spring Security。我在开始学习Scala的时候创建了它,我尝试使用完整的Java堆栈:Spring MVC + Spring + Spring Security + Hibernate + BlazeDS(我在这个项目中也使用了Flex作为前端)。现在我可以说这是非常好的和积极的经验。一般来说,问题是scala如何与Spring和Hibernate集成。我必须在实体中使用@BeanProperty@BeanInfo和java集合。

但我没有遇到春季安全方面的任何实际问题。它按预期工作。我只记得Spring AOP的一个小问题:服务类通过BlazeDS将他们的方法发布到flex应用程序。我还使用Spring Security的对象ACL(<security:intercept-methods /><security:protect />)来保护它们。当然,所有这些都是可能的,因为AOP魔术。所以我注意到这个连接的Spring AOP的行为 - 如果你的类实现了一些接口,那么它将使用JDK的代理来实现它们并将所有调用委托给target,但是如果类没有实现任何接口,那么它将使用cglib来扩展你的类并委托每个方法调用。问题是我的公共服务类没有实现任何接口,但AOP无法正常工作。原因是所有scala类都实现了ScalaObject接口。所以我为所有公共服务创建了新的特性以解决这个问题(我没有找到任何方法来配置Spring AOP - 似乎这种行为是硬编码的。)

因此,您可以看到使用Scala的Spring Security并不是一个问题。我相信它应该更容易使用Apache Shiro,因为它声称完全是容器或环境独立的(我听说可以在Spring之外使用Spring Security,但我也听说它非常痛苦)。通常在Scala中,您可以使用Java存档所有内容。问题是如何使用漂亮/惯用/纯/无副作用的结果代码。

顺便说一下,有一个新项目将Lift与Apache Shiro集成在一起:lift-shiroHere您还可以找到关于它的small blog post

希望这有帮助。