Spring Boot @RestControllAdvice 打印自定义错误消息和正常错误消息如何解决这个问题?

问题描述

我的要求是打印自定义错误消息,但在响应正文中,它给出了通常的错误消息以及如下所示的自定义错误消息。时间戳部分不是必需的,但它正在打印。请告诉我哪里出错了。

{ "status": "UNAUTHORIZED","message": "Token_Expired" }{ "timestamp": "2021-04-17T19:50:27.748+00:00","status": 401,"error": "Unauthorized","message": "","path": "/getEmployees" }

我的要求是在令牌过期时仅获取这是响应正文 { "status": "UNAUTHORIZED","message": "Token_Expired" }

ExceptionAdviceClass

` @RestControllerAdvice 公共类 ExceptionControllerAdvice 扩展了 ResponseEntityExceptionHandler{

@ExceptionHandler(value = Exception.class)
@ResponseStatus(HttpStatus.UNAUTHORIZED)
public ErrorDTO processRuntimeException(Exception e) {
    return new ErrorDTO(HttpStatus.UNAUTHORIZED,"Token_Expired");
}

}`

过滤器类

@Override
protected void doFilterInternal(HttpServletRequest request,HttpServletResponse response,FilterChain filterChain)
        throws servletexception,IOException,TokenExpiredException {
try{
  code.....
  code.....
}

catch(ExpiredJwtException ex){
        String newToken= request.getHeader("newToken");
        String requestURL = request.getRequestURL().toString();
        // allow for New Token creation if following conditions are true.
        if (newToken != null && newToken.equals("true") && requestURL.contains("newToken")) {
            allowFornewToken(ex,request);
        } 
        else{
            resolver.resolveException(request,response,null,ex);
            throw new TokenExpiredException();
        }
    } catch (BadCredentialsException ex) {
        request.setAttribute("exception",ex);
    } catch (Exception ex) {
        System.out.println(ex);
    }
    filterChain.doFilter(request,response);}

自定义消息的 TokenExpired 类

public class TokenExpiredException extends RuntimeException{

public TokenExpiredException() {
    super("TOKEN_EXPIRED");
}

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...