shiro 怎么拦截unauthorizedexception异常

发布网友 发布时间:2022-04-24 14:52

我来回答

2个回答

热心网友 时间:2022-05-01 13:12

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

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

我再补充下。

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

<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">  
        <property name="exceptionMappings">  
            <props>  
                <!-- 错误异常转发jsp页面 -->  
                <prop key="org.apache.shiro.authz.UnauthorizedException">/unauthorized.jsp</prop>  
                <prop key="org.apache.shiro.authz.UnauthenticatedException">/unauthenticated.jsp</prop>  
            </props>  
        </property>  
    </bean>

但是,有时候我们不需要跳转页面,而是需要返回一个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;  
    }

热心网友 时间:2022-05-01 14:30

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

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com