具体的には、サーバー側に、
@RestController
public class CsrfController {
@RequestMapping("/csrf-token")
public CsrfToken csrf(CsrfToken token) {
return token;
}
}
のようなエンドポイントを用意します。クライアント側では、
$(function() {
$('#login-btn').on('click', function() {
e.preventDefault();
$.ajax({
url: '/csrf',
type: 'GET'
})
.done(function(data) {
$('input[name=_csrf]').val(data.token);
$('#form').submit();
});
});
});
みたいに、ログインボタンがクリックされたらAJAXでCSRFトークンを取得して、フォームのhidden項目にセットしてからログインを試みればいいですね。
動かして試したわけではないですが、公式にもあるやりかたなので、うまく動くはず。