package cn.ksource.core.web; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.commons.lang.StringUtils; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import cn.ksource.config.SysConfigConstants; import cn.ksource.core.Permission; import cn.ksource.web.SysConstants; /** * FreeMarker视图拦截器,页面展示之前做一些通用处理 * @version V1.0.0 * @author 杨凯 * @date Dec 12, 2013 4:20:04 PM */ public class FreeMarkerViewInterceptor extends HandlerInterceptorAdapter { public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception arg3) throws Exception { } public void postHandle(HttpServletRequest request, HttpServletResponse response, Object arg2, ModelAndView view) throws Exception { String contextPath = request.getContextPath(); if (view != null) { request.setAttribute("base", contextPath); request.setAttribute("common_static", contextPath); } } public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //处理Permission Annotation,实现方法级权限控制 HandlerMethod method = (HandlerMethod)handler; Permission permission = method.getMethodAnnotation(Permission.class); //如果为空在表示该方法不需要进行权限验证 if (permission == null) { return true; } //验证是否具有权限 if (!WebUtil.hasPower(request, permission.value())) { response.sendRedirect(request.getContextPath()+"/business/nopermission.html"); return false; } return true; //注意此处必须返回true,否则请求将停止 //return true; } }