標籤:
需要開發一個按鈕許可權的控制,思路:攔截所有按鈕路徑,和使用者擁有的3級按鈕許可權對比,
所有驗證都一個方法解決,只需要修改js後的參數,參數就是按鈕對應的許可權碼
如果有什麼問題請提醒,謝謝!
xml:
<mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/> <bean id="buttonInterceptor" class="sls.interceptor.buttonInterceptor"/> </mvc:interceptor> </mvc:interceptors>
buttonInterceptor:
import java.util.List;import java.util.logging.Logger;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;import sls.system.vo.UserInfoVo;/** * 按鈕許可權控制 攔截 * @author Administrator * */public class buttonInterceptor extends HandlerInterceptorAdapter { private static final String[] IGNORE_URI = {"/download"}; private Logger log = Logger.getLogger(this.getClass().getName()); public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { boolean flag = false; response.reset(); String url = request.getRequestURL().toString(); String parameter = request.getParameter("parameter"); log.info(">>>: " + url); boolean ret=false; if (url.contains("button") && parameter!=null){ log.info("訪問路徑包含在button集合中被攔截"); UserInfoVo userInfoVo =(UserInfoVo) request.getSession().getAttribute("userInfoVo"); String authorityButtons =userInfoVo.getAuthorityButton(); if(authorityButtons!=null){ String[] authorityButton =authorityButtons.split(","); for (String string : authorityButton) { //log.info(string); if(string.equals(parameter)){ log.info("有許可權"+parameter); ret= true; } } } if(!ret){ java.io.PrintWriter out = response.getWriter(); out.println(false); out.flush(); out.close(); } }else{ ret =true; } return ret; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { super.postHandle(request, response, handler, modelAndView); } }
js:
function downloadProductInfo(){$.post("jurisdiction/button.action?parameter=downloadProductInfo",function (e){if(e.indexOf("false")!=-1){alert("您沒有操作此按鈕的許可權")}else{$("#searchForm").attr("action","basicData/downloadProductInfo.action");$("#searchForm").submit();}})}
controller:
/** * 按鈕許可權控制公用方法 * @return */@RequestMapping("button")@ResponseBody public String button(){System.out.println("按鈕許可權控制公用方法訪問成功");return "";}
mvc 按鈕許可權控制