java – 用于HTTP 400的Spring MVC自定义消息

前端之家收集整理的这篇文章主要介绍了java – 用于HTTP 400的Spring MVC自定义消息前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有几个如下所示的SprigMVC方法,返回ModelAndView或Responsebody.当用户向这些URL发出缺少所需参数的请求时,他们自然会收到消息“必需字符串参数’id’不存在”.

从安全角度来看,我想隐藏用户的详细描述消息.因此,黑客不容易知道缺少的参数,并且在没有任何描述的情况下会得到400错误.这可能是通过弹簧配置/ Spring Security实现的,或者我必须手动重构我的所有方法以某种方式返回自定义消息.

@RequestMapping(value = "/payment",method = RequestMethod.GET)
public ModelAndView getReponse(@RequestParam(value = "id",required = true)) {

    return model;
}

@RequestMapping(value = "/status",method = RequestMethod.GET)
public @ResponseBody String getStatus(@RequestParam(value = "id",required = true) String id) {

    return "string";
}
最佳答案
你真正需要的是MissingServletRequestParameterException的全局处理程序,当缺少请求参数时Spring会抛出它.解决此问题的最简单方法是使用ControllerAdvice来处理所有控制器.

import org.springframework.web.bind.MissingServletRequestParameterException;

@ControllerAdvice
class MissingServletRequestParameterExceptionHandler {
    @ExceptionHandler(MissingServletRequestParameterException.class)
    @ResponseBody
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    public String handleMissingParameter() {
        return "Your custom result";
    }
}

如果要仅为特定控制器隐藏缺少的参数消息,只需将handleMissingParameter方法移动到此控制器,而不创建ControllerAdvice.

猜你在找的Spring相关文章