如何在Spring Security的regexMatcher
中使用像这样的参数?我有许多以/sUrl
开头且具有不同参数的URL。该代码无效!
.regexMatchers("\\/sUrl\\?params=\\{url:\"reports\\/Manager\",subSystem:\"ABS\"\\}").access("hasRole('ROLE_ABS')")
控制器:
@RequestMapping(value = "sUrl", method = RequestMethod.GET)
public RedirectView sUrl(@RequestParam(name = "params") String params) {
RedirectView redirectView = new RedirectView();
.
.
.
return redirectView;
}
当我单击此链接时,在浏览器检查器的网络分区中看到的URL:
sUrl?params = {url:%22reports / Manager%22,subSystem:%22ABS%22}
答案 0 :(得分:3)
您必须使用带有URL-encoded查询参数的正则表达式,请参见RegexRequestMatcher
:
使用正则表达式确定提供的
> set PATH=%PATH%;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\
的URL。也可以配置为匹配特定的HTTP方法。匹配是针对请求的HttpServletRequest
+servletPath
+pathInfo
执行的,默认情况下区分大小写。可以使用带有queryString
参数的构造函数来使用不区分大小写的匹配。
在路径后返回请求URL中包含的查询字符串。如果URL没有查询字符串,则此方法返回
caseInsensitive
。与CGI变量QUERY_STRING的值相同。返回:
包含查询字符串的
null
;如果URL不包含查询字符串,则为String
。该值不会被容器解码。
您修改后的代码:
null