我有一个前后端分离的项目,*.html后缀的文件访问权限打算在handler里实现,
然后web.xml配置
<filter> <filter-name>mvc</filter-name> <filter-class>com.jfinal.core.JFinalFilter</filter-class> <init-param> <param-name>configClass</param-name> <param-value>com.corp.config.WebConfig</param-value> </init-param> </filter> <filter-mapping> <filter-name>mvc</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </filter>
config里配置入下
/** * 配置处理器 */ public void configHandler(Handlers me) { // 重定向 me.add(new PermissionHandler()); }
permissionHanlder代码入下
public class PermissionHandler extends Handler { List<String> permissions = new ArrayList<String>(); public PermissionHandler(){ permissions.add("/index.html"); } @Override public void handle(String target, HttpServletRequest request, HttpServletResponse response, boolean[] isHandled) { System.out.println("url:"+target); if (target.indexOf(".html")>-1) { System.out.println(target); if(!permissions.contains(target)) { target = "/login.html"; } } next.handle(target, request, response, isHandled); } }
然后看日志打印出来的url都是接口,没有出现 index.html, jquery.js这样的静态文件,以前好像没这样。
项目:JFinal
jfinal 的 handler 是肯定可以拦截到的,除非前方还有别的机制阻断了