2012-06-01 6 views
3

Grails 2.0.1에서 springsecurity 플러그인을 사용하고 있습니다. 내 역할 계층 구조 및 기타 s2 속성은 아래에 나와 있습니다. 내 @Secured 주석이 ROLE_USER_WRITE을 허용하는 경우 Grails : SpringSecurity roleHierarchy가 예상대로 작동하지 않습니다.

grails.plugins.springsecurity.userLookup.userDomainClassName = 'myApp.security.User' 
grails.plugins.springsecurity.userLookup.authorityJoinClassName = 'myApp.security.UserRole' 
grails.plugins.springsecurity.authority.className = 'myApp.security.Role' 
grails.plugins.springsecurity.successHandler.defaultTargetUrl="/index" 
grails.plugins.springsecurity.securityConfigType = "Annotation" 

//grails.plugins.springsecurity.rejectIfNoRule = true 
grails.plugins.springsecurity.roleHierarchy = ''' 
    ROLE_ADMIN > ROLE_OWNER_TRANSFER_PRIVILEGE 
    ROLE_OWNER_TRANSFER_PRIVILEGE > ROLE_OWNER 
    ROLE_OWNER > ROLE_USER_WRITE 
''' 

은 문서 당으로, 모든 다른 역할뿐만 아니라 액세스를 허용해야합니다. 마찬가지로 태그를 사용하려면 ROLE_OWNER, ROLE_OWNER_TRANSFER_PRIVILEGE 및 ROLE_ADMIN이 true와 같아야합니다. 그러나 이것은 작동하지 않으며 대신 각 역할을 나열해야합니다. 나는 디버그 로그를 확인하고이 역할 계층 구조가 생성되고있는 것 같다이

2012-06-01 09:28:14,802 [pool-5-thread-1] DEBUG hierarchicalroles.RoleHierarchyImpl - setHierarchy() - The following role hierarchy was set: 
     ROLE_ADMIN > ROLE_OWNER_TRANSFER_PRIVILEGE 
     ROLE_OWNER_TRANSFER_PRIVILEGE > ROLE_OWNER 
     ROLE_OWNER > ROLE_USER_WRITE 

2012-06-01 09:28:14,802 [pool-5-thread-1] DEBUG hierarchicalroles.RoleHierarchyImpl - buildRolesReachableInOneStepMap() - From role ROLE_ADMIN one can reach r 
ole ROLE_OWNER_TRANSFER_PRIVILEGE in one step. 
2012-06-01 09:28:14,802 [pool-5-thread-1] DEBUG hierarchicalroles.RoleHierarchyImpl - buildRolesReachableInOneStepMap() - From role ROLE_OWNER_TRANSFER_PRIVIL 
EGE one can reach role ROLE_OWNER in one step. 
2012-06-01 09:28:14,802 [pool-5-thread-1] DEBUG hierarchicalroles.RoleHierarchyImpl - buildRolesReachableInOneStepMap() - From role ROLE_OWNER one can reach r 
ole ROLE_USER_WRITE in one step. 
2012-06-01 09:28:14,803 [pool-5-thread-1] DEBUG hierarchicalroles.RoleHierarchyImpl - buildRolesReachableInOneOrMoreStepsMap() - From role ROLE_ADMIN one can 
reach [ROLE_OWNER_TRANSFER_PRIVILEGE, ROLE_USER_WRITE, ROLE_OWNER] in one or more steps. 
... 

처럼 보이지만 응용 프로그램을 실행하는 동안 그들은 적용되지 않습니다. 내가 뭘 잘못하고 있으며 어떻게이 문서화대로 작동하게합니까?

+0

음, 오타가 있습니다. 현상금으로이 질문을 중복시키는 이유는 무엇입니까? (지금 무엇을해야합니까? 내가 그것을 지우거나 닫을 수 없으며 아무것도하지 못합니다. 개조자는 여기에서 나를 도울 수 있습니까? –

+0

안녕하세요, Ritesh, 저는 당신이 얻을 수 있다고 생각지 않습니다. 그 현상금을 되찾아주세요. 자신의 질문에 대답하고 답을 수락 할 수 있습니다. 아마도 같은 문제가있는 누군가가 대답을 높이 평가할 것입니다. –

+0

FAQ를 통해 현상금이 제공되면 사라집니다. 의 SO는 사람들을 돕는 것이므로 적어도 자신의 질문에 대답 할 수 있습니다. –

답변

1

roleHierarchies는 작동하기 위해 완전한 트리 구조를 가져야합니다. 내 질문에 나는 계층 구조의 절반을 표현했다. 그것은 불완전한 나무 표현으로 판명되었다. 같은 다음 ROLE_USER 및 ROLE_USER_WRITE 계층 구조와 봄 보안의 연결이 끊어 하위 트리 여기에

ROLE_ADMIN > ROLE_OWNER_TRANSFER_PRIVILEGE 
ROLE_OWNER_TRANSFER_PRIVILEGE > ROLE_OWNER 
ROLE_OWNER > ROLE_USER_WRITE 
ROLE_USER > ROLE_READ 

는, 당연하게도, 권한을 해결하는 동안이를 해결할 수 없습니다.

관련 문제