¿Cómo intercepta Shiro las excepciones no autorizadas?
shiro no interceptará esta excepción.
Por el contrario, shiro lanzará esta excepción al comprobar.
Permítanme añadir una cosa más.
Cuando shiro genera excepciones de autenticación y administración de permisos, la acción predeterminada es configurar una página de error en spring.xml para la redirección. La configuración es la siguiente:
--?¿Reenviar página jsp con error y excepción? -->?
?
?
Pero a veces no necesitamos saltar a una página, sino que necesitamos devolver datos json para que los analicemos nosotros mismos. Entonces está bien, debe anular el método SimpleMappingExceptionResolver doResolveException. Luego reemplace SimpleMappingExceptionResolver en spring.xml con su propia anulación.
Los ejemplos de reescritura específicos son los siguientes: @Override?
protected?ModelAndView?doResolveException(HttpServletRequest?request,?HttpServletResponse?response,?Object?handler,?Exception?ex)?{
intentar{?
/?
Resultado de BaseResult = nuevo BaseResult();?
if(por ejemplo, instancia de UnauthorizedException)?{
result.setMsg(RespMSG.MSG_UNAUTHORIZED?);?
result.setStatus(RespMSG.STATUS_UNAUTHORIZED);?
} else if (por ejemplo, instancia de UnauthenticatedException)?{
result.setMsg(RespMSG.MSG_UNAUTHENTICADO?);?
result.setStatus(RespMSG.STATUS_UNAUTHENTICADO);?
} ¿más?{? resultado .setMsg(RespMSG.MSG_FAILLED?);?
result.setStatus(RespMSG.STATUS_FAILLED);?
}?
response.setHeader("Contenido - escriba", ?" text/html;charset=UTF-8");?
PrintWriter?
writer.write(new?Gson().toJson(resultado)) ?
escritor.flush();?
}?{
e.printStackTrace();?
}?
¿regresar?
}
}