plugins - 从stark-security升级到Spring Security插件

标签 plugins grails spring-security upgrade

我最近将项目的Grails从1.0.5升级到1.3.7。 Project中使用了Stark-security插件(0.4.3),我想用Spring-security插件(最新版)替换它。我知道Stark安全性某种程度上基于Spring安全性。

Spring-security与Stark-security有多少不同,我应该如何解决该问题?

整个系统中都大量使用了Stark-security的静态授权= [...],我只是希望我不需要用完全不同的方式重新实现功能。

最佳答案

Stark像Acegi插件一样使用Spring Security 2.0,而较新的Spring Security Core插件则使用Spring Security 3,因此它们都使用基本相同的库。

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

例如,以下是我如何将Stark插件文档中的示例转换为在Spring Security Core中使用注释的方法:

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将拒绝访问,因此您需要对所有内容进行映射。这样比较安全,因为如果您添加了一个新的 Controller 却忘记了映射它,则经过身份验证的用户将无法访问它,因此很显然这是有问题的。要在Spring Security Core中启用此行为,只需添加以下行
grails.plugins.springsecurity.rejectIfNoRule = true

grails-app/conf/Config.groovy

关于plugins - 从stark-security升级到Spring Security插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6344329/

相关文章:

Eclipse Java EE 插件

git - 为什么 Jenkins 无法 git init 并返回状态码 1?

ruby-on-rails - 将电子邮件确认扩展到 Authlogic

multithreading - Delphi:在线程上的plugindll中创建的对象中使用adocomponents时出现异常

spring-security - Spring 安全 : Getting error "The server understood the request but refuses to authorize it"

spring-security - 为什么 jsessionid 附加到每个 url?

java - Spring Security什么时候记得我处理cookie?

hibernate - GORM : hql query produces exception: could not resolve property

maven - Grails: Ivy :Google Code:如何向Grails添加Google Code依赖项?

grails - 如何修复 “No signature of method: java.util.ArrayList.delete()”删除对象?