`

java permission

    博客分类:
  • java
阅读更多
import javax.swing.JFrame;

public class PermissionTest {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
        System.setSecurityManager(new SecurityManager());
        JFrame frame=new PermissionTestFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
       
}

}



import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;

public class PermissionTestFrame extends JFrame {
     private JTextField textField;
     private WordCheckTextArea textArea;
     private static final int DEFAULT_WIDTH=400;
     private static final int DEFAULT_HEIGHT=200;
    
     public PermissionTestFrame()
     {
    this.setTitle("PermissionTest");
    this.setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
    textField=new JTextField(20);
    JPanel panel=new JPanel();
    panel.add(textField);
    JButton openButton=new JButton("Indert");
    panel.add(openButton);
    openButton.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
insertWords(textField.getText());
}
   
    });
    add(panel,BorderLayout.NORTH);
    textArea=new WordCheckTextArea();
    add(new JScrollPane(textArea),BorderLayout.CENTER);
   
     }
     private void insertWords(String words)
     {
    try
    {
    textArea.append(words+"\n");
    }catch(SecurityException e)
    {
    JOptionPane.showMessageDialog(this,"I am sorry,but I cannot do that");
   
    }
     }
}



import java.security.Permission;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

public class WordCheckPermission extends Permission {

private String action;

public WordCheckPermission(String name) {
super(name);
}
public WordCheckPermission(String name,String anAction)
{
super(name);
action=anAction;
}

@Override
public boolean equals(Object other) {
if(other==null)return false;
if(!getClass().equals(other.getClass())) return false;
WordCheckPermission b=(WordCheckPermission) other;
if(!action.equals(b.action)) return false;
if(action.equals("insert"))
return getName().equals(b.getName());
else if(action.equals("avoid"))
return badWordSet().equals(b.badWordSet());
else
return false;
}

@Override
public String getActions() {
return action;
}

@Override
public int hashCode() {
return getName().hashCode()+action.hashCode();
}

@Override
public boolean implies(Permission other) {
if(!(other instanceof WordCheckPermission)) return false;
        WordCheckPermission b=(WordCheckPermission) other;
        if(action.equals("insert"))
        {
        return b.action.endsWith("insert")&&getName().indexOf(b.getName())>=0;
        }else if(action.equals("avoid"))
        {
        if(b.action.equals("avoid"))
        return b.badWordSet().containsAll(badWordSet());
             else if(b.action.equals("insert"))
              {
           for(String badWord:badWordSet())
          if(b.getName().indexOf(badWord)>=0)
          return false;
             return true;
           }else
           {
        return false;
           }
   }
        else return false;
}

public Set<String> badWordSet()
{
Set<String> set=new HashSet<String>();
set.addAll(Arrays.asList(getName().split(",")));
return set;
}
}



import javax.swing.JTextArea;

public class WordCheckTextArea extends JTextArea {

/* (non-Javadoc)
* @see javax.swing.JTextArea#append(java.lang.String)
*/
@Override
public void append(String str) {
// TODO Auto-generated method stub
WordCheckPermission p=new WordCheckPermission(str,"avoid");
SecurityManager manager=System.getSecurityManager();
if(manager!=null)manager.checkPermission(p);
super.append(str);
}

}

//PermissionTest.policy
grant codeBase "file:d:/test/permission/"
{
//permission java.security.AllPermission;
  permission WordCheckPermission "sex,drugs,c++", "avoid";
  permission WordCheckPermission "my name is minn", "insert";

};

实现权限类
1)javac *.java
2)java  -Djava.security.policy=PerssionTest.policy  PermissionTest
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics