java permission

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值