shiro springmvc 註解 ajax和同步請求 無許可權處理處理
阿新 • • 發佈:2019-01-31
1. springmvc進行錯誤跳轉配置如下
<!-- shiro為整合springMvc 攔截異常 --> <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <!-- 這裡你可以根據需要定義N多個錯誤異常轉發 --> <prop key="org.apache.shiro.authz.AuthorizationException">redirect:/shiro/401</prop> </props> </property> </bean>
2.controller的寫法
@RequestMapping("/401") public String authorizationException(ModelMap modelMap, HttpServletRequest request) { String requestType = request.getHeader("X-Requested-With"); // ajax 請求 if (requestType != null && requestType.equals("XMLHttpRequest")) { return "redirect:/shiro/asyn401"; } else { return "redirect:/shiro/syn401"; } } // 非同步 @RequestMapping("/asyn401") public void asyn401(ModelMap modelMap, HttpServletRequest request, HttpServletResponse response) { ResultDto resultDto = new ResultDto(); resultDto.setResult(ResultDto.resultCode_401); try { super.writeJSON(response, resultDto); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } // 同步 @RequestMapping("/syn401") public String syn401(ModelMap modelMap, HttpServletRequest request) { return "/shiro/401"; }