shiro 怎么拦截unauthorizedexception异常

2024-12-20 01:11:15
推荐回答(2个)
回答1:

shiro并没有拦截这个异常啊。

相反,shiro在check的时候抛出了这个异常。

我再补充下。

shiro抛出身份验证和权限管理异常时候,默认操作都是需要在spring.xml配置一个错误页面以供跳转的。配置如下:

  
          
              
                  
                /unauthorized.jsp  
                /unauthenticated.jsp  
            
  
          
    

但是,有时候我们不需要跳转页面,而是需要返回一个json数据自己解析。那么也可以,需要重写SimpleMappingExceptionResolver的doResolveException方法。然后把spring.xml的SimpleMappingExceptionResolver换成你自己重写的就好了。具体重写示例如下:

@Override  
    protected ModelAndView doResolveException(HttpServletRequest request, HttpServletResponse response,  
                                              Object handler, Exception ex) {  
        try {  
            // Expose ModelAndView for chosen error view.  
            BaseResult result = new BaseResult();  
            if (ex instanceof UnauthorizedException) {  
                result.setMsg(RespMSG.MSG_UNAUTHORIZED );  
                result.setStatus(RespMSG.STATUS_UNAUTHORIZED);  
            } else if (ex instanceof UnauthenticatedException) {  
                result.setMsg(RespMSG.MSG_UNAUTHENTICATED );  
                result.setStatus(RespMSG.STATUS_UNAUTHENTICATED);  
            } else {  
                result.setMsg(RespMSG.MSG_FAILLED );  
                result.setStatus(RespMSG.STATUS_FAILLED);  
            }  
            response.setHeader("Content-type", "text/html;charset=UTF-8");  
            PrintWriter writer = response.getWriter();  
            writer.write(new Gson().toJson(result));  
            writer.flush();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
        return null;  
    }

回答2:

我也不清楚,没去看代码,但我知道如何解决。 是报这个错么 Caused by: java.lang.IllegalArgumentException: Odd number of characters 如果是的话 就把spring-shiro.xml里 加密的部分去掉 改成