2011-06-14 65 views
1

我最近将项目的Grails从1.0.5升级到1.3.7。项目使用了Stark-security插件(0.4.3),我想用Spring-security插件(最新版)替换它。我明白斯塔克安全基于Spring安全。从stark-security升级到spring安全插件

Spring-security与Stark-security有什么不同?我应该如何处理和解决这个问题?

斯塔克安全的静态授权= [...]纷纷被用来在整个系统中,我只希望我并不需要重新实现的东西完全不同的功能..

回答

3

斯塔克用途Spring Security 2.0就像Acegi插件一样,而较新的Spring Security Core插件使用Spring Security 3,所以它们都使用基本相同的库。

在Spring Security Core中没有类级别安全规则配置的概念,但是有多种方法来指定规则 - 注释(默认),定义所有规则的Map,以及将规则存储在数据库与Requestmap实例。这些在节中描述“5配置请求映射到安全的网址”在http://burtbeckwith.github.com/grails-spring-security-core/docs/manual/

例如,这里就是我想的例子转换从斯塔克插件文档使用注释使用Spring Security核心:

import grails.plugins.springsecurity.Secured 

class BookController { 

    @Secured(['isAuthenticated()']) 
    def index = { Book.list() } 

    @Secured(['ROLE_EDITOR']) 
    def edit = { 
     // Some logic to edit a book 
    } 
} 

这两个插件之间的方法有一个重要的区别。如果没有为URL定义规则,Stark会拒绝访问,因此您需要为所有内容创建映射。这样更安全,因为如果添加一个新的控制器并忘记映射它,那么经过身份验证的用户将无法访问它,所以很明显,某些问题是错误的。为了使Spring Security的核心这一行为,只需要添加行

grails.plugins.springsecurity.rejectIfNoRule = true 

grails-app/conf/Config.groovy

+0

谢谢,我会尝试这种方法。 – heikkim 2011-06-27 06:59:02