我有一个前后端分离的项目,*.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 是肯定可以拦截到的,除非前方还有别的机制阻断了