You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot Admin登录接口在Postman中未返回自定义错误信息问题

解决无效登录时自定义错误消息不显示的问题

嘿,我知道你遇到的问题了——现在无效登录时返回的错误信息里message字段是空的,而你希望它显示Admin not found对吧?这其实是因为Spring Boot默认的错误处理逻辑没有把自定义异常的消息带到响应里,我给你两种简单的解决办法:

方法一:快速开启默认错误消息暴露(最简单)

你只需要在项目的配置文件里添加一行配置,让Spring Boot把异常的消息包含到默认的错误响应中:

如果是application.properties:

server.error.include-message=always

如果是application.yml:

server:
  error:
    include-message: always

添加完配置后重启项目,再用Postman测试无效登录,你就能得到包含自定义消息的响应了:

{
  "timestamp": "2020-05-19T13:59:01.172+00:00",
  "status": 404,
  "error": "Not Found",
  "message": "Admin not found",
  "path": "/api/adminLogin"
}

方法二:自定义全局异常处理器(更灵活)

如果你想完全控制错误响应的结构或者添加更多自定义内容,可以写一个全局异常处理器:

首先创建一个全局异常处理类:

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.context.request.WebRequest;
import java.time.LocalDateTime;

@ControllerAdvice
public class GlobalExceptionHandler {

    // 专门处理ResourceNotFoundException
    @ExceptionHandler(ResourceNotFoundException.class)
    public ResponseEntity<CustomErrorResponse> handleResourceNotFound(ResourceNotFoundException ex, WebRequest request) {
        CustomErrorResponse errorResponse = new CustomErrorResponse();
        errorResponse.setTimestamp(LocalDateTime.now().toString());
        errorResponse.setStatus(HttpStatus.NOT_FOUND.value());
        errorResponse.setError("Admin Not Found"); // 可以自定义error字段
        errorResponse.setMessage(ex.getMessage()); // 拿到你抛出的异常消息
        errorResponse.setPath(request.getDescription(false).replace("uri=", "")); // 动态获取请求路径

        return new ResponseEntity<>(errorResponse, HttpStatus.NOT_FOUND);
    }

    // 自定义错误响应的实体类
    static class CustomErrorResponse {
        private String timestamp;
        private int status;
        private String error;
        private String message;
        private String path;

        // 生成getter和setter方法
        public String getTimestamp() { return timestamp; }
        public void setTimestamp(String timestamp) { this.timestamp = timestamp; }
        public int getStatus() { return status; }
        public void setStatus(int status) { this.status = status; }
        public String getError() { return error; }
        public void setError(String error) { this.error = error; }
        public String getMessage() { return message; }
        public void setMessage(String message) { this.message = message; }
        public String getPath() { return path; }
        public void setPath(String path) { this.path = path; }
    }
}

这种方式你可以完全自定义响应里的每一个字段,比如把error改成Admin Not Found,或者添加额外的字段,非常灵活。

两种方法都能解决你的问题,如果你只是想快速看到自定义消息,方法一就足够了;如果需要更定制化的响应,方法二更合适。

内容的提问来源于stack exchange,提问作者Vishavjeet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 17:38:01