从 stark-security 升级到 spring 安全插件

Posted

技术标签:

【中文标题】从 stark-security 升级到 spring 安全插件【英文标题】:Upgrading from stark-security to spring security plugin 【发布时间】:2011-09-14 17:14:46 【问题描述】:

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

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

Stark-security 的 static authorizations = [...] 在整个系统中被大量使用,我只是希望我不需要用完全不同的东西重新实现功能..

【问题讨论】:

【参考方案1】:

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/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 会拒绝访问,因此您需要对所有内容进行映射。这更安全,因为如果您添加一个新控制器并忘记映射它,经过身份验证的用户无法访问它,因此很明显有问题。要在 Spring Security Core 中启用此行为,只需添加行

grails.plugins.springsecurity.rejectIfNoRule = true

grails-app/conf/Config.groovy

【讨论】:

谢谢,我试试这个方法。

以上是关于从 stark-security 升级到 spring 安全插件的主要内容,如果未能解决你的问题,请参考以下文章

Spring源码构建

Spring源码构建

Spring源码构建

IE 中的 Spry 菜单栏

使用SPRY框架,提升Web开发效率

KindEdito从3.51升级到4.0版本流程怎么升级?