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