加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 01:39:10 所属栏目:大数据 来源:网络整理
导读:我有几个如下所示的SprigMVC方法,返回ModelAndView或Responsebody.当用户向这些URL发出缺少所需参数的请求时,他们自然会收到消息“必需字符串参数id不存在”. 从安全角度来看,我想隐藏用户的详细描述消息.因此,黑客不容易知道缺少的参数,并且在没有任何描述

我有几个如下所示的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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读