Spring - 仅允许查询字符串中的特定参数,否则会引发错误

时间:2015-08-05 19:52:07

标签: java spring

我们有一个要求,我们只想在查询字符串中允许特定的键值对

示例

google.com/?a=b&c=d 应该没问题(我们希望& c被允许作为查询字符串键的一部分)

google.com/?w=x&y=z 

应该抛出一个错误,因为如果a或c以外的任何东西作为查询字符串键的一部分传递,我们想抛出一个错误

任何想法如何做到这一点?

1 个答案:

答案 0 :(得分:0)

ServletRequest getParameterNames()getParameterMap()会为您提供传入的所有参数。所以这样的事情会起作用:

List<String> whiteListedParameters = Arrays.asList("a", "b");

@RequestMapping(value = "google.com", method = RequestMethod.GET)
public ModelAndView render(HttpServletRequest request) throws Exception {
    Enumeration<String> parameterNames = request.getParameterNames();
    while(parameterNames.hasMoreElements()) {
        String parameterName = parameterNames.nextElement();
        if(!whiteListedParameters.contains(parameterName)) {
            throw new Exception("Whatever you want");
        }
    }
    ...
}