2011-09-22 6 views
0

특정 페이지에 대한 링크 인 사용 권한 목록이 있으며이 목록은 데이터베이스에서 제공됩니다. 이제 응용 프로그램 전체에 JSP 페이지가 있으며 표시되는 특정 링크가 있습니다. 이 jsp는 오래된 jsp이며 코드가 모두 있습니다. 지금 당장 데이터베이스에서 검색 한 권한 목록에 따라이 링크를 표시하거나 숨기려고합니다.페이지로드 전에 앵커 태그 숨기기

자바 스크립트 스 니펫이나 jsp 또는 모든 jsp에 넣을 수있는 조합을 사용하여 중앙 처리 방법이 있습니까?

이러한 URL에 대한 인증 부분은 이미주의를 기울여야합니다. 일반적으로 앵커 태그 인 URL의 표시는 실제로 모든 JSP 및 체크인 세션으로 이동하는 방법 외에는주의를 기울여야합니다.

답변

0

각 페이지를 살펴 보지 않고도이 작업을 수행하기 위해 자바와 JavaScript의 조합을 설정할 수 있습니다.

저는 개인적으로 jQuery를 사용할 것입니다. 권한 수준에 따라 JavaScript 변수를 설정 한 다음 jQuery를 사용하여 모든 앵커/링크를 반복하여 링크 이름이나 일반 속성을 구문 분석하여 제거하거나 숨 깁니다.

var permissionLevel = <%=bean.getPermissionLevel()%> 

switch(permissionLevel){  
    case 0: 
     $("a").each(function(){ 
      var link = $(this).attr("href"); 
      if(link == 'myLinkName'){ 
       $(this).remove(); 
      } 
     }) 
} 

이 예제에서는 권한 수준으로 숫자 값을 사용했습니다. case 값 대신에 문자열 값을 쉽게 사용할 수 있고 if 문을 사용할 수 있습니다. 그러나 이것은 일반적인 생각을 보여줍니다.

+0

고마워요, 내가 그것을 밖으로 시도하고 알려 드리겠습니다 – user546352

+0

$ (document) .ready (function()) 비슷한 기능을 추가하고이 jsps 일반 jsps 잘 작동하지만이 동일한 기능을 헤더 jsp 넣어 않습니다. 파이어 폭스에서 작동하고 IE에서 null 객체에 대해 불평합니다. 문서화 된 함수에 대한 대안이 있습니까? 일반화하여 머리글에 넣을 수 있습니까? – user546352

+0

<% = bean 일 수 있습니다.getPermissionLevel() %>이 null 인 경우 따옴표로 묶으십시오. 따라서 페이지가로드 될 때 bean 또는 권한 수준이 null 인 경우 자바 스크립트에 빈 문자열 만 있으면됩니다. 그렇지 않으면 형식이 잘못되었습니다. 또한 bean이나 value가 null이라는 가정에 근거하여 javascript 권한 레벨의 기본값을 설정하는 일부 논리를 고려할 수도 있습니다. –

0

내가 수행 한 작업은 보안 역할을 맡고 역할 유효성 검사가 통과되면 페이지에 링크를 포함하거나 제외하는 자체 태그 정의를 만드는 것입니다. 당신이 자바 스크립트에서 그것을 할 경우에만 여전히 페이지를 검사하고 URL을 액세스 할 수 있습니다 .. 희망이 도움이

0

"쇼"클래스없이 모든 앵커 태그는 기본적으로 하나의 CSS 표현을 사용하여 숨길 수 있습니다 :

a:not(.show) { 
    display: none; 
} 

하고 그런 다음 그들에게 보여하고자하는 시점에서 단순히 위의 규칙을 무효화 할 CSS 클래스 "쇼"를 추가, (나는이 문서 준비 기능이 될 것입니다 귀하의 경우라고 말하고 싶지만).

자바 스크립트 :

var anchors = document.getElementsByTagName("a"); 
for (var i = 0; i < anchors.length; i++) { 
    anchors[i].className = "show"; 
} 
+0

감사합니다. 나는 이것을 밖으로 시도하고 그것이 어떻게되는지 알려줄 것입니다. – user546352

0

사용 JSP 태그 libs가. taglib에 URL 링크를 감싸십시오. 예를 들어 스프링 보안이 태그 라이브러리에서이

<security:authorize access="hasRole('ROLE_ADMIN')"> 
    // display something 
</security:authorize> 

같은 것을 가지고, 사용자가 로그인 한 경우는 확인하고 그가 특정 권한 또는 역할을 가지고 있으며, 그 경우 당신은 그것을 쓰거나을 건너 뜁니다 중 ...

0

허용 된 페이지의 자바 스크립트 배열을 브라우저에 보내면 모든 링크를 반복하여 목록에 있는지 확인할 수 있습니다. 당신은 아마 보안되지 않은 링크를 가지고 있기 때문에 어떻게 든 그것들을 처리해야 할 것입니다.