2012-08-24 2 views
0

저는 현재 사용자 권한에 따라 UI를 동적으로 렌더링하고자하는 GWT 애플리케이션을 개발 중입니다. 내 응용 프로그램에 제품 목록과 해당 목록을 편집 할 수있는 가능성이 있습니다 (새 제품 추가, 제거 등).GWT : 동적 UI 렌더링

또한 읽기 전용 권한을 가진 사용자와 쓰기 권한이있는 사용자가 있습니다. 그것은 가능한 지금 (또는이 가능하다) 내 UI 클래스에서이 같은 뭔가를 : 쓰기 권한이없는 사용자가 추가을보고 버튼을 제거하지 마십시오

if (user.hasWritePermissions) { 
    Button addButton = new Button() 
} 

그 그래서? 물론 백엔드에도 권한 검사가 있지만 사용자가 사용할 수있는 것을 보는 경우 편리합니다.

아니면 GWT를 사용하면 더 좋은 가능성이 있습니까?

답변

2
  • 귀하의 접근 방법은 문제가 없습니다.
  • 자바 코드와 마찬가지로
  • 이론적으로, 당신은 또한 바인딩 연기와 함께 할 수있는 다형성의 사용 (예를 들어 EditableProductListView과 ReadOnlyProductListView를) 만들 수 있지만, 그것을 위해 나쁜 사용 사례입니다 : 좋아 , 그것은 당신이 단지 두세 가지 유형의 사용자를 가지고 있다면 가능합니다. 그런 다음 <define-property name="role" values="readonly,readwrite" />을 사용하여 지연 바인딩 속성을 도입 할 수 있습니다. 그러나 순열의 수가 기하 급수적으로 증가하는 반면 여기에있는 장점은 아마도 작을 것입니다 (사용자는 몇 개의 코드 블록을 덜 다운로드하게됩니다).

물론 이것은 모두 스타일의 문제입니다. 실제 접근 권한 검사 (이미 언급했듯이 다시 말 하겠지만)는 서버 측에서 수행해야하기 때문에 보안 접근 방식이 더 좋거나 나쁘습니다.

1

모든 "admin"-Button 및 UI 요소에 CSS 클래스를 추가 할 수도 있습니다. 다른 CSS 클래스를 루트 패널 (또는 다른 조상)으로 설정하면 모든 관리 요소가 사라집니다.

Change property of CSS class in GWT at runtime

body.admin .onlyForAdmin{ 
    display:block; 
} 

.onlyForAdmin{ 
    display:none; 
} 

그러나이 이야기 할 수 없다는 자주 : 권한 검사는 서버 측되어야합니다! (언급 한대로)