org.springframework.security.access.AccessDeniedException: 不允许访问

浅浅记录一下:

自定义的AccessDenideEXception处理类拦截不到错误,会被全局管理器先拦截,

两种处理:

第一种就是这样直接在全局处理器上捕捉处理这个异常

@ControllerAdvice
public class ExceptionHandle {
    private final static Logger LOGGER = LoggerFactory.getLogger(ExceptionHandle.class);

    /**
     * 判断错误是否是已定义的已知错误,不是则由未知错误代替,同时记录在log中
     * @param e
     * @return
     */
    @ExceptionHandler(value = Exception.class)
    @ResponseBody
    public ResultMessage getException(Exception e){
        if(e instanceof MyException){
            MyException myException = (MyException) e;
            return ResultUtil.error(myException.getCode(),myException.getMessage());
        }
        LOGGER.error("【系统异常】{}",e);
        return ResultUtil.error(500,ExceptionEnum.UNKNOW_ERROR.getMsg());
        //return ResultUtil.error(500,e.getMessage());
    }

    /**
     *  权限不足异常捕捉,
     *  因为全局异常会比自定的提前捕捉到,
     *  直接在全局异常这里做处理
     * @param e
     * @return
     */
    @ResponseBody
    @ExceptionHandler(value = AccessDeniedException.class)
    public ResultMessage handleAccessRE(AccessDeniedException e) {
        LOGGER.error("权限不足!");
        return ResultUtil.error(ResultCode.NO_PERMISSION.getCode(),"没有权限,请联系管理员");
    }
}

第二种就是捕捉到并抛出,让自定义的AccessDeniedException处理类处理,懒得写第二种,差不多这意思,感谢观看

你可能感兴趣的:(java,开发语言)