2011-06-14 3 views
1

최근 프로젝트의 Grails를 1.0.5에서 1.3.7로 업그레이드했습니다. 프로젝트에 스탁 보안 플러그인 (0.4.3)이 사용 중입니다. 스프링 보안 플러그인 (최신)으로 바꾸고 싶습니다. 스탁 보안은 어떻게 든 스프링 보안을 기반으로한다는 것을 이해합니다.stark-security에서 spring security plugin으로 업그레이드

스프링 보안이 Stark-security와 얼마나 다르며 어떻게 문제를 해결하고 해결해야합니까?

스탁 보안의 정적 권한 = [...] 시스템 전반에 걸쳐 풍부하게 사용하고 난 그냥 완전히 다른 뭔가 기능을 구현할 필요가 없습니다 바랍니다 ..

답변

3

스탁 사용 Acegi 플러그인과 같은 Spring Security 2.0과 최신 Spring Security Core 플러그인은 Spring Security 3을 사용하므로 모두 기본적으로 동일한 라이브러리를 사용하고있다.

스프링 보안 코어에는 클래스 레벨 보안 규칙 구성에 대한 개념이 없지만 주석 지정 (기본값), 모든 규칙을 정의하는 Config.groovy의 맵 및 Requestmap 인스턴스가있는 데이터베이스 이들은 예를 들어 http://burtbeckwith.github.com/grails-spring-security-core/docs/manual/

에서 "URL을 확보하기 위해 요청 매핑 구성 5"절에 설명되어, 여기에 내가 봄 보안 코어와 주석을 사용하는 스타크 플러그인 문서에서 예제를 변환하는 것입니다 방법은 다음과 같습니다

import grails.plugins.springsecurity.Secured 

class BookController { 

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

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

두 플러그인 간의 접근 방식에는 중요한 차이점이 하나 있습니다. Stark은 URL에 대해 정의 된 규칙이 없으면 액세스를 거부하므로 모든 것에 대한 매핑이 필요합니다. 새 컨트롤러를 추가하고 매핑하는 것을 잊어 버리면 인증 된 사용자가 액세스 할 수 없기 때문에 안전합니다. 따라서 잘못된 것이 분명합니다. 스프링 시큐리티 코어에서이 동작을 사용하려면, 단지 grails-app/conf/Config.groovy

+0

덕분에 라인

grails.plugins.springsecurity.rejectIfNoRule = true 

를 추가, 나는이 방법을 시도 할 것이다. – heikkim

관련 문제