SecurityManager实现的一点技巧

    技术2022-05-11  68

    都是些写个自己的一些废话或者心得,不是什么技术文章,也完全没什么资本给别人扯技术..

    虽然自己实现SecurityManager 不是什么好事,毕竟不如实现permission方便和安全,但是偶还是比较想了解哈.不知道别的同胞在实现时候有没有遇到这样的问题,典型的重写checkPermission方法如下:

    public void checkPermission(Permission p){

          if(p instanceof  somePermission)//需要进行附加验证的permission,当然最好的实现办法

                                                                        //是实现新的permission

              myCheck();//自己的验证

          .............

          super.checkPermission(p);

    }

    这样会产生一个典型的调用过程是myCheck()本身调用多次MySecurityManger进行用样的严整:

    Class MySecurityManager->Class SecurityManager->loop....->MyApp

    解决方法用个这样的小函数去处重复验证:

    private boolean inSameManager(){   Class[] cc = getClassContext();   // skip past current set of calls to this manager   int i = 0;   while (i < cc.length && cc[0] == cc[i])      i++;   // check if there is another call to this manager   while (i < cc.length)   {      if (cc[0] == cc[i]) return true;      i++;   }   return false;}这是在core java II 7th(确实是好书,不过大家要看我推荐原版)书里的,例子虽小,确实经典,我是以前打死没想到过,记到这里,以便以后查阅,哈哈.


    最新回复(0)