控制客戶端訪問是開發(fā)一個基于B/S的架構的系統(tǒng)的開發(fā)者必須考慮的問題。JSP或SERVLET規(guī)范的基于配置文件的安全策略對資源的控制是以文件為單位的,即只可以定義某個視圖全部可以或全部不能被訪問。一個比較復雜的系統(tǒng)往往要要求對視圖的一部分(如JSP頁面里的一個按鈕)提供訪問控制,只允許被某種角色的用戶訪問。如果采用可編程的安全策略,因為對用戶角色和操作的定義在開發(fā)時不能定義,而且這種策略加大了程序員的工作量,它可能不是一種好的辦法。
我采用定制標簽庫和和配置文件來解決這個問題:把要權限控制的JSP頁面元素如BUTTON,作為標簽的內容。為受保護的內容起一個唯一的名稱,把這個名稱作為標簽的一個屬性。某個角色對某個頁面元素或一組頁面元素是否有權限,在XML配置文件中描述。
例如,下面的JSP頁面有“詳細”和“修改”兩個按鈕。
<%@ taglib uri="http://mytag" prefix="custTag" %>
<html>
<head>
<title>test</title>
</head>
<body >
<form name="form1" >
<table width="600" border="0" cellspacing="0" cellpadding="2" >
<tr>
<td>
<custTag:JspSecurity elementName="employeedetail" >
<input type="button" name="detail" value="詳細" >
</custTag:JspSecurity>
<custTag:JspSecurity elementName="employeemodify" >
<input type="button" name="modify" value="修改" >
</custTag:JspSecurity>
</td>
</tr>
</table>
<br>
</form>
</body>
下面XML配置文件內容表示對角色為common的用戶,只對名為employeedetail 的頁面元素即“詳細”按鈕有權限,對角色為“admin”的用戶,對名為employeedetail 和employeemodify的頁面元素即兩個按鈕都有權限。
新聞熱點
疑難解答
圖片精選