姚博文 springsecurity restful 自定義 csrf
阿新 • • 發佈:2019-01-22
當專案使用中使用了springsecurity啟用了csrf而前臺使用restful訪問,post方法的時候會提示需要csrf令牌,可以自己實現一個令牌
BeaconToken為自己實現了CsrfToken的類,頁面上得到後放入一個全域性變數用以訪問,在訪問連結後加上_csrf=自己定義的token
if(session.getAttribute("org.springframework.security.web.csrf.HttpSessionCsrfTokenRepository.CSRF_TOKEN") == null){
BeaconToken token = new BeaconToken("X-CSRF-TOKEN", "_csrf", System.currentTimeMillis() + "_todd");session.setAttribute("org.springframework.security.web.csrf.HttpSessionCsrfTokenRepository.CSRF_TOKEN", token);
json.element("token", token.getToken());
}else{
json.element("token", JSONObject.fromObject
(session.getAttribute("org.springframework.security.web.csrf.HttpSessionCsrfTokenRepository.CSRF_TOKEN")).get("token"));
}
//[{"headerName":"X-CSRF-TOKEN","parameterName":"_csrf","token":"072d23b2-3ef5-4092-a848-88396a257775"}]