/***DESC:*权限校验过滤器*/publicclassPermissionFilterextendsAccessControlFilter{@OverrideprotectedbooleanisAccessAllowed(ServletRequestrequest,ServletResponseresponse,ObjectmappedValue)throwsException{HttpServletRequesthttpRequest=((HttpServletRequest)request);/***这里需要处理一下请求的URL路径,把它转成shiroaddStringPermission存储的URL格式,如:/user/email*所以这里替换了一下,使用根目录开始的URI*/Stringuri=httpRequest.getRequestURI();//获取URISystem.out.println("当前请求的URL:"+uri);StringbasePath=httpRequest.getContextPath();//获取basePathif(null!=uri&&uri.startsWith(basePath)){uri=uri.replaceFirst(basePath,"");}if(subject.isPermitted(uri)){System.out.println("有权限");returnBoolean.TRUE;}上面的URL拦截并判断权限,如果是传统的URL的话可以很容易的判断是否有权限。但是如果时restful风格的url的话怎么拦截判断是否有权限呢?因为数据库权限表保存的URL是没有带参数的比如:/user但是restful风格API请求时会携带参数:/user/1所以使用:if(subject.isPermitted(uri)){System.out.println("有权限");returnBoolean.TRUE;}根本不能判断,
添加回答
举报
0/150
提交
取消