错误示例:
@RequestMapping(value = "/login", method = RequestMethod.POST)
public CommonResult<String> login(@RequestBody @Valid LoginRequest loginRequest,
HttpServletRequest request, HttpServletResponse response) {
try {
loginService.login(loginRequest, request, response);
} catch (Exception e) {
return CommonResult.error(e.getMessage());
}
return CommonResult.ok();
}
正确示例:
@RequestMapping(value = "/login", method = RequestMethod.POST)
public CommonResult<String> login(@RequestBody @Valid LoginRequest loginRequest,
HttpServletRequest request, HttpServletResponse response) {
loginService.login(loginRequest, request, response);
return CommonResult.ok();
}
问题描述:
调用接口时用户名或密码错误触发org.springframework.security.authentication.BadCredentialsException,但未被全局异常处理捕获
解决方法:
去除controller中的try..catch。定义全局异常处理后,不要在每个接口中try...catch了
=========================
20241104更新
【问题描述】更清晰的描述是,当BadCredentialsException异常抛出后就被try...catch处理掉了,所以未触发全局异常处理