2011-09-22 143 views
0

之前,我有權網址指向鏈接到特定頁面,該列表來自數據庫的列表。 現在,整個應用程序都有jsp頁面,並且它們顯示了某些鏈接。這些jsps是較老的jsps,代碼都在那裏。 現在,基於我從數據庫中檢索的權限列表,我希望顯示或隱藏這些鏈接。隱藏錨標籤的頁面加載

是否有這樣做無論是使用JavaScript代碼或JSP或組合,可以把所有的JSP任何集中的方式?

這些URL的授權部分已經被關注,除了實際進入每個jsp和檢入會話的方式之外,通常需要關注顯示通常是錨標籤的URL。

回答

0

沒有通過你也許可以建立Java和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(); 
      } 
     }) 
} 

在這個例子中,我使用了一個數值作爲權限級別。您可以輕鬆使用字符串值並使用if語句而不是案例狀態,但這顯示了總體思路。

+0

謝謝,我會試試看,並會讓你知道 – user546352

+0

我在$(document).ready(function()中添加了類似的函數,它在常規的jsps中工作正常,但是這個函數放在頭文件jsp中在Firefox中工作,並在IE中,它抱怨空對象。是否有任何替代文件準備功能?所以我可以概括它,並把它放在頭? – user546352

+0

可能是<%= bean。getPermissionLevel()%>爲null,請嘗試用引號括起來,以便在頁面加載時,如果bean或權限級別爲null,則只需在JavaScript中有一個空字符串,否則就會格式錯誤。您也可以考慮一些基於假設bean或值爲null的邏輯來將默認值設置爲javascript權限級別。 –

0

我所做的就是創建一個採取安全角色和包括或者如果角色驗證通過排除在頁面鏈接我自己的標籤定義。如果您在JavaScript做到這一點,只有隱藏鏈接,您仍然可以檢查的頁面和訪問的URL ..希望這有助於

0

你可以讓所有的錨標籤,而無需使用一個CSS表達式默認是隱藏的「秀」類:

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

,然後在你想向他們展示點(我想你的情況說,這將是文件準備好功能),只需添加CSS類「秀」,這會作廢以上規則。

的JavaScript:

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

謝謝你,我也會試試這個,並會讓你知道它是怎麼回事。 – user546352

0

使用JSP標籤庫。將URL鏈接包裝在taglib中。例如春季安全具有這樣的事情

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

,您將檢查用戶是否登錄,他有一定的權限或角色,如果他有你要麼寫還是跳過吧...

0

如果你把你的允許頁面的JavaScript數組到瀏覽器,然後你可以遍歷所有的鏈接檢查,看看它們是否在列表中。你可能有一些不安全的鏈接,所以你必須以某種方式處理這些鏈接。