公司原有项目升级开发,要将几个特殊的jsp过滤掉(也就是不做登陆验证),重写的match() 打断点没有执行,但是过滤器可以拦截未登陆的页面,并跳转到登录页面,怎么回事?并且我检查项目中nutz的其他拦截方式,都没有使用,比如 @IocBean ,@Filters(@By(type=CheckSession.class, args={"username", "/login.jsp"})) 等都没有使用,高手指点一下。
public class SecurityFilter implements ActionFilter{
private static final Log log = Logs.getLog(SecurityFilter.class);
private String funcId ;
public SecurityFilter(String funcId){
this.funcId = funcId;
}
public View match(ActionContext ac) {
Master m=BaseModule.getMaster(ac.getRequest());
String module=ac.getModule().getClass().getSimpleName();
String pojo=module.substring(0,module.length()-6).toLowerCase();
if(m!=null){
boolean flg = false;
Map<String,Menu> map = (Map<String, Menu>) Lang.collection2map(HashMap.class, m.getRole().getMenus(), "id");
if(map.get(Sys.get(pojo))!=null){
String cid=ac.getRequest().getParameter("cid");
if("article".equals(pojo)&&cid!=null){
RoleCatalog rc=m.getRole().getRcs().get(cid);
if(rc!=null&&(Integer)Lang.obj2map(rc).get(funcId)==0){
return null;
}else{
return new ViewWrapper(new JspView("/manage/error.jsp"),"对不起,您没有此功能的权限,请联系管理员!!!");
}
}else
return null;
}else{
return new ViewWrapper(new JspView("/manage/error.jsp"),"对不起,您没有此功能的权限,请联系管理员!!!");
}
}else{
return new ViewWrapper(new JspView("/manage/login.jsp"), null);
}
}
}