2011-04-04 134 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