[英]regexMatcher for URL with query parameters in Spring Security
我應該如何在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 = {鏈接:%22reports /管理器22%,子系統:%22ABS%22}
您必須使用帶有URL編碼的查詢參數的正則表達式,請參閱RegexRequestMatcher
:
使用正則表達式來決定是否提供了提供的
HttpServletRequest
的URL。 也可以配置為匹配特定的HTTP方法。 匹配是針對請求的servletPath
+pathInfo
+queryString
執行的,默認情況下區分大小寫。 通過使用caseInsensitive
參數的構造函數,可以使用不區分大小寫的匹配。
返回路徑后請求URL中包含的查詢字符串。 如果URL沒有查詢字符串,則此方法返回
null
。 與CGI變量QUERY_STRING的值相同。返回:
包含查詢字符串的
String
如果URL不包含查詢字符串,則返回null
。 該值不會被容器解碼。
你的改進代碼:
.regexMatchers("\\/sUrl\\?params=\\{url:%22reports\\/Manager\%22,subSystem:%22ABS%22\\}").access("hasRole('ROLE_ABS')")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.