applet AccessControlException: access denied

注意:本文出自 “阿飛”的博客 ,如果要轉載本文章,請與作者聯繫!

使用AccessController.doPrivileged提升代碼權限!如果不期望客戶端修改JRE中的安全配置,可以選擇在代碼中提升,而這個就是我所期待的!

在客戶端彈出的jdk的對話框中只要用戶點擊信任,運行按鈕,也就是說如果信任此簽名,將可以執行此代碼:AccessController.doPrivileged(...),Applet權限也將得到提升。


具體示例代碼如下:

[java] view plaincopy
  1. private String runCmd(){  
  2.     String result = AccessController.doPrivileged(new PrivilegedAction<String>() {    
  3.         @Override    
  4.         public String run() {  
  5.                 String res = null;  
  6.         //TODO like 'Runtime.getRuntime().exec(cmd)' etc.....  
  7.                 return res;    
  8.             }  
  9.         });  
  10.     return result;  
  11. }  

就這樣,簡單的幾句話就搞定了。。。。

別忘了,最後需要做的是重新打jar包,簽名,然後將證書和keystore文件,jar文件重新發布到服務器測試:)


補充:

之前也曾寫過一篇文章《關於JS調用Applet的執行權限的問題》(http://blog.csdn.net/faye0412/article/details/4566400),裏面提到了使用SwingUtilities.invokeLater(new Runnable()...的方式,但是這種方法只能解決之前的簽名和Applet假死的情況,不能解決現在遇到的這種情況,所以,最好的方式是結合這兩種方法使用。問題完美解決!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章