2009-06-14 3 views
0

Grails GUI 옵션 중 하나를 사용하여 탭을 만들면 (현재 사용해야하는) 현재 사용중인 탭을 켜고 끌 수 있습니까? 사용자? 예를 들어 admin 역할이있는 사용자 만 사용자 관리 탭을 볼 수 있습니다. 심지어 익명의 사용자도 메인 콘텐츠 탭을보아야합니다.Grails에서 이것을 할 수 있습니까? 2 : 스프링 보안을 사용하여 개별 탭 보안하기

이상적으로는 스프링 보안 ACL을 사용하고 싶습니다.

+0

다행 내가 3 년 전에 질문이 질문에 대한 최근의 답을 얻었을 수 있습니다! 이 타이틀은 Grails 2.x의 출시 이후 새로운 의미를 가지고 있습니다. 전에 질문을 썼을 때, 그것은 두 번째 "Grails In This Grails"질문이었습니다. –

+0

:) 데이트를 보지 못했습니다. 누군가 그것을 업데이트해야하고 새로운 grails 질문에 대한 목록 맨 위에 나타났습니다. – ibaralf

답변

0

추가에 대해

<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %> 

가 더 읽기 :

<sec:authorize access="hasRole('supervisor')"> 

This content will only be visible to users who have 
the "supervisor" authority in their list of <tt>GrantedAuthority</tt>s. 

</sec:authorize> 

당신은 바로 정상으로 JSP 태그를 사용할 수 있습니다 :이 비슷한을 사용하여 탭을 렌더링 구분 할 수 있습니다 때로는 너무 많은 로직과 코딩 (GSP)을 추가 할 수 있습니다. 스프링 - 보안 플러그인과 함께 내비게이션 플러그인과 같은 다른 옵션을 사용하여 더 많은 코드를 컨트롤러에 보낼 수 있습니다. 좋은 점은 뷰가 조건 태그를 제거하는 것보다 깔끔하다는 것입니다.

grails install-plugin navigation 

컨트롤러에서 @Secured 주석을 사용하십시오. 예를 들어 두 개의 해당 컨트롤러가있는 두 개의 탭을 만들었습니다. 뷰에서

@Secured(['ROLE_ADMIN']) 
class SlidesController { 

static navigation = [ 
    group:'tabs', order:10, title:'Users', action:'index' 
] 
def index = { 
     ..... 
} 

@Secured(['ROLE_ADMIN']) 
class ProgramsController { 

static navigation = [ 
    group:'tabs', order:10, title:'Programs & Presentation', action:'index' 
] 
def index = { 
     ..... 
} 

:

<head> 
    ... other head elems. 
    <nav:resources/> 
</head> 

<body> 
<nav:render/> 
    ... Your other stuff 
</body> 

탭이 자동으로 (이보기를 레이아웃 GSP를하는 것도 유용 할 것이다)가 나타납니다.

enter image description here

0

예, Acegi (Spring Security Plugin)을 사용하면 매우 쉽고 간단합니다 (this section of the docs 참조). 일부 역할을 정의한 다음 해당 역할을 다른 URL에 적용하는 방법을 설명해야합니다. 예 (위의 링크에서) :

/관리/= ROLE_USER /책/테스트/ = IS_AUTHENTICATED_FULLY /책/** = ROLE_SUPERVISOR

Grails는이 작업을 수행하는 방법을 정확하게에 대한 설명도 있습니다

행동 책에서.

+0

답장을 보내 주셔서 감사합니다. 이는 URL 보안 문제를 해결합니다. 그러나 요구 사항은 동일한 페이지에서 특정 탭을 보호합니다. 내 앱의 프로토 타입 (내가 의심스러워하는 ZK를 사용하여 완료)은 http://flashlit.serveall.net/flashlit에 있습니다. –

+1

동일한 페이지에서 모든 탭을 렌더링하는 데 사용 된 HTML이 동일한 http 요청으로 전송되었다는 것을 의미하는 경우 운이 좋지 않습니다. 보안 콘텐츠가 전송되지 않도록 앱 보안 레이어의 디자인을 변경해야합니다. . URL별로 분리하는 것이 훨씬 쉽고 모듈화가 가능합니다. (그리고 탭의 내용을로드하기 위해 ajax를 사용합니다.) – Chii

0

스프링 시큐리티에는 멋진 태그 라이브러리가 있습니다. 그것은 그냥 here if you like

관련 문제