簡體   English   中英

帶有Spring Security中查詢參數的URL的regexMatcher

[英]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參數的構造函數,可以使用不區分大小寫的匹配。

HttpServletRequest

返回路徑后請求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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM