package com.example.springboot.advice;
|
|
import com.example.springboot.entity.vo.Result;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.shiro.authz.AuthorizationException;
|
import org.apache.shiro.authz.UnauthorizedException;
|
import org.springframework.web.bind.annotation.ControllerAdvice;
|
import org.springframework.web.bind.annotation.ExceptionHandler;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
/**
|
* 全局异常
|
*/
|
@Slf4j
|
@ControllerAdvice
|
public class GlobalExceptionHandler {
|
@ExceptionHandler(value = Exception.class)
|
@ResponseBody
|
public Result exception(HttpServletRequest req, Exception e) {
|
log.error("---exception Handler---Host {} invokes url {} ERROR: ", req.getRemoteHost(), req.getRequestURL(), e);
|
return Result.fail("系统错误,请联系网站管理员!");
|
}
|
|
@ExceptionHandler(value = RuntimeException.class)
|
@ResponseBody
|
public Result runtimeException(HttpServletRequest req, RuntimeException e) {
|
log.error("---runtimeException Handler---Host {} invokes url {} ERROR: ", req.getRemoteHost(), req.getRequestURL(), e);
|
return Result.fail(e.getMessage());
|
}
|
|
/**
|
* 处理Shiro权限拦截异常
|
*/
|
@ExceptionHandler(value = {AuthorizationException.class, UnauthorizedException.class})
|
@ResponseBody
|
public Result authorizationException(HttpServletRequest req, UnauthorizedException e) {
|
log.error("---authorizationException Handler---Host {} invokes url {} ERROR: ", req.getRemoteHost(), req.getRequestURL(), e);
|
return Result.fail("权限不足");
|
}
|
}
|