spring security中CSRF中設定不針對某些請求過濾
阿新 • • 發佈:2019-01-01
在spring security 4中,CSRF預設開啟:
Java程式碼
但如果某些URL不想加入CSRF,可以使用下面的辦法下載:
實現RequestMatcher.這個介面中的方法,在這裡排除某些URL不做CSRF,比如:
Java程式碼
這裡,就是針對/unproted開頭的URL,都不用做CSRF了
然後在配置檔案中下載:
Java程式碼
Java程式碼
- <http>
- ...
- <csrf />
- </http>
但如果某些URL不想加入CSRF,可以使用下面的辦法下載:
實現RequestMatcher.這個介面中的方法,在這裡排除某些URL不做CSRF,比如:
Java程式碼
- public class CsrfSecurityRequestMatcher implements RequestMatcher {
-
private Pattern allowedMethods = Pattern.compile("^(GET|HEAD|TRACE|OPTIONS)$"
- private RegexRequestMatcher unprotectedMatcher = new RegexRequestMatcher("/unprotected", null);
- @Override
- public boolean matches(HttpServletRequest request) {
- if(allowedMethods.matcher(request.getMethod()).matches()){
- return false;
- }
-
return
- }
- }
這裡,就是針對/unproted開頭的URL,都不用做CSRF了
然後在配置檔案中下載:
Java程式碼
- <http>
- <csrf request-matcher-ref="csrfSecurityRequestMatcher"/>
- </http>