【Java】实现Permission类的一个小案例一直报AccesscontrolException异常。为何?

Kany Zhang 2016-10-12 12:13:04
自学Java那么久了。感觉到java真的是博大精深。今天来到关于“安全”这个版块。看了很久。在说到实现权限类时。那么问题来了。书上一个小案例卡了许久。

我依次重写了implies方法,hashCode方法,equals方法。

public boolean implies(Permission other) {
// TODO Auto-generated method stub
if(!(other instanceof WordCheckPermission))
return false;
WordCheckPermission b = (WordCheckPermission) other;

if(action.equals("insert"))
{
return b.action.equals("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;
}


public boolean equals(Object other) {
// TODO Auto-generated method stub
if(other == null)
return false;
if(!getClass().equals(other.getClass()))
return false;

WordCheckPermission b = (WordCheckPermission) other;
if(!Objects.equals(action, b.action))
return false;
if("insert".equals(action))
return Objects.equals(getName(), b.getName());
else if("avoid".equals(action))
return badWordSet().equals(b.badWordSet());
else
return false;
}

public int hashCode() {
// TODO Auto-generated method stub

return Objects.hash(getName(),action);
}

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


然后主程序的功能是通过限制特定字符不能添加到JTextArea中外,其他字母都可添加。
策略文件如下:
grant
{
permission permissions.WordCheckPermission "sex,drugs,C++", "avoid";
};

最后运行时候无论添加什么单词字母都抛出AccessControlException异常,无法添加。百思不得其解。大神们,这种原因一般是什么造成的?求解。拜托了。
...全文
199 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧