2011-04-04 94 views
10

什么是Scala Web应用程序中Web安全性的良好框架选择。我们想尝试Scala网页开发,但是还不能找到好的Scala网页应用安全框架。Scala Web应用程序安全

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

你有Scala web应用程序安全框架的经验,或者在Scala环境中使用Spring Security/Apache Shiro吗?

回答

4

Lift的安全性如电梯的作者David Pollak所描述的here所述。

+1

更多的信息在这里:http://seventhings.liftweb.net/security – shellholic 2011-04-04 13:03:59

+0

感谢您的答案,但我也在寻找一般方法,这是独立于web框架 – 2011-04-04 13:35:24

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的代理来实现它们并将所有调用委托给目标,但是如果类没有实现任何接口,那么它将使用cglib来扩展你的类并委托每个方法调用。问题是我的公共服务类没有实现任何接口,但AOP无法正常工作。原因是由所有scala类实现的ScalaObject接口。所以我为所有公共服务创建了新的特性来解决这个问题(我还没有找到任何配置Spring AOP的方法 - 似乎这种行为是硬编码的)。

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

顺便说一句,有一个新的项目集成了Lift与Apache Shiro:lift-shiroHere你也可以找到关于它的small blog post

希望这会有所帮助。

+0

感谢您的答案。有关ScalaObject代理的问题真的很好知道。 – 2011-09-05 07:21:40