1、Copy 創建并返回當前權限的相同副本。
2、Demand 如果調用堆棧上的內容不滿足權限對象所指定的權限內容,則會在運行時引發SecurityException。該方法可以讓當前代碼不會被其他的惡意代碼所利用。
3、Intersect 創建并返回一個權限,該權限是當前權限和指定權限的交集。
4、IsSubsetOf 確定當前權限是否為指定權限的子集。
5、Union 創建一個權限,該權限是當前權限與指定權限的并集。
在上面列出的方法中,Demand方法是最常用也是最重要的方法。Demand方法會對當前方法的所有調用者進行檢查以確定它們是否有足夠的權限訪問以指定的方式訪問特定的資源(通常的檢查方式是從調用堆棧上最新的調用方法開始通過執行完全的堆棧遍歷來滿足安全條件,但堆棧遍歷不是必須的,PrincipalPermission.Demand就沒有進行堆棧遍歷),如果檢查失敗的話,Demand方法會拋出SecurityException異常,只有沒有任何異常拋出的情況下,Demand方法才成功返回。
接著我們來討論PrincipalPermission類,這里就需要我們前面所談到principal對象了,在PrincipalPermission類的實例執行Demand方法時,實際上是在判斷當前的principal對象是否匹配給定PrincipalPermission對象,如果不匹配的話,就拋出SecurityException。另外,Demand方法還可以用來強行讓principal對象的identity驗證通過,以便能不拋出異常,進行正常的操作。
下面的代碼片斷簡要地說明了如何使用principalpermission對象:
String user1 = "Abbott"; String role1 = "StraightMan"; PrincipalPermission PrincipalPerm1 = new PrincipalPermission(user1, role1); String user2 = "Costello"; String role2 = "FunnyMan"; PrincipalPermission pp = new PrincipalPermission(user2, role2); PrincipalPerm1.Union(pp).Demand();
上面的代碼說明了如何使用合并兩個principalpermission對象,在合并之后,如果用戶是StraightMan角色的Abbott或是FunnyMan角色的Costello,那么Demand將會成功返回。
以上就是基于角色的安全性中所需要用到的基礎類和一些示例代碼,希望大家能夠從上面的內容中粗窺.NET安全性的門堂,能更好的應用.NET安全性來開發安全的程序。
文章來源于領測軟件測試網 http://www.kjueaiud.com/