mirror of https://gitee.com/xiaonuobase/snowy
【更新】优化流下载接口在权限校验时的异常处理
parent
4181fd0aca
commit
bbb634e9f4
|
@ -19,8 +19,11 @@ import lombok.extern.slf4j.Slf4j;
|
|||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import vip.xiaonuo.common.pojo.CommonResult;
|
||||
import vip.xiaonuo.common.util.CommonResponseUtil;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* 全局异常页面处理器,覆盖默认的Whitelabel Error Page
|
||||
|
@ -39,7 +42,7 @@ public class GlobalErrorViewController {
|
|||
* @date 2022/2/11 16:11
|
||||
**/
|
||||
@RequestMapping("/errorView")
|
||||
public CommonResult<String> globalError(HttpServletRequest request) {
|
||||
public void globalError(HttpServletRequest request, HttpServletResponse response) throws IOException {
|
||||
CommonResult<String> commonResult = new CommonResult<>(404, "路径不存在", null);
|
||||
Object model = request.getAttribute("model");
|
||||
if(ObjectUtil.isNotEmpty(model)) {
|
||||
|
@ -57,6 +60,6 @@ public class GlobalErrorViewController {
|
|||
exception.printStackTrace();
|
||||
}
|
||||
log.error(">>> {}", commonResult.getMsg());
|
||||
return commonResult;
|
||||
CommonResponseUtil.renderError(response, commonResult.getMsg());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,11 +15,13 @@ package vip.xiaonuo.core.handler;
|
|||
import cn.dev33.satoken.exception.SaTokenException;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.http.Header;
|
||||
import cn.hutool.http.HttpStatus;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.ibatis.exceptions.PersistenceException;
|
||||
import org.mybatis.spring.MyBatisSystemException;
|
||||
import org.springframework.http.HttpMethod;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.converter.HttpMessageNotReadableException;
|
||||
import org.springframework.validation.BindException;
|
||||
import org.springframework.validation.BindingResult;
|
||||
|
@ -33,10 +35,13 @@ import org.springframework.web.multipart.support.MissingServletRequestPartExcept
|
|||
import vip.xiaonuo.auth.core.util.AuthExceptionUtil;
|
||||
import vip.xiaonuo.common.exception.CommonException;
|
||||
import vip.xiaonuo.common.pojo.CommonResult;
|
||||
import vip.xiaonuo.common.util.CommonResponseUtil;
|
||||
import vip.xiaonuo.common.util.CommonServletUtil;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.validation.ConstraintViolation;
|
||||
import javax.validation.ConstraintViolationException;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
|
@ -112,9 +117,22 @@ public class GlobalExceptionUtil {
|
|||
//文件上传错误特殊提示
|
||||
commonResult = CommonResult.error("请选择要上传的文件并检查文件参数名称是否正确");
|
||||
} else if (e instanceof SaTokenException) {
|
||||
|
||||
// 如果是SaToken相关异常,则由AuthExceptionUtil处理
|
||||
return AuthExceptionUtil.getCommonResult(e);
|
||||
CommonResult<String> saTokenCommonResult = AuthExceptionUtil.getCommonResult(e);
|
||||
HttpServletRequest request = CommonServletUtil.getRequest();
|
||||
String accept = request.getHeader(Header.ACCEPT.getValue());
|
||||
// 此时异常可能是SaToken的过滤器异常,如果是流下载等接口,需要直接渲染异常信息
|
||||
if(ObjectUtil.isNotEmpty(accept) && accept.equals(MediaType.APPLICATION_OCTET_STREAM_VALUE)) {
|
||||
try {
|
||||
CommonResponseUtil.renderError(CommonServletUtil.getResponse(), e.getMessage());
|
||||
return null;
|
||||
} catch (IOException ioException) {
|
||||
ioException.printStackTrace();
|
||||
commonResult = CommonResult.error("服务器异常");
|
||||
}
|
||||
} else {
|
||||
// 如果是SaToken相关异常,则由AuthExceptionUtil处理
|
||||
return saTokenCommonResult;
|
||||
}
|
||||
} else if(e instanceof MyBatisSystemException) {
|
||||
|
||||
// 如果是MyBatisSystemException
|
||||
|
@ -128,7 +146,7 @@ public class GlobalExceptionUtil {
|
|||
e.printStackTrace();
|
||||
commonResult = CommonResult.error("数据操作异常");
|
||||
}
|
||||
} else {
|
||||
}else {
|
||||
e.printStackTrace();
|
||||
commonResult = CommonResult.error("数据操作异常");
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue