CSRF保护与自定义形式

时间:2015-02-27 16:14:30

标签: jhipster

我在应用程序中创建了一个自定义表单,并将其设置为由我的一个RestControllers映射的URL。我发送表单,并在浏览器中收到以下错误消息:

您的请求无法处理 抱歉,发生了错误。

状态:禁止(禁止) 消息:无效的CSRF令牌' null'在请求参数' _csrf'上找到或标题' X-CSRF-TOKEN'。

我在请求本身和我发现的标题中看了一下chrome dev工具:

的Cookie:访问=是; NG_TRANSLATE_LANG_KEY =%22en%22; tmhDynamicLocale.locale =%22en%22; JSESSIONID = FB0F8F19DE9B17AE4038C0149A81D829; SPRING_SECURITY_REMEMBER_ME_COOKIE = NEY5SnBQMUExcForNWFuUzVJbWlpdz09OmErQkE0bWZhbURubzFDamd5ckNJUUE9PQ; CSRF-TOKEN = ab678757-2326-4ebe-99e5-c97c1372fc9a

这是否意味着请求获得了CSRF令牌,但名称错误或者其他内容完全不同?如何将正确的CSRF令牌插入表单中,或者如何自动到达?

1 个答案:

答案 0 :(得分:4)

如果您只想看到您的表单正常工作,您可以对URL表单禁用CSRF保护。只需在web.ignoring()

上添加一个条目即可

SecurityConfiguration.java上,找到configure方法并添加如下条目:

web.ignoring() .antMatchers("/api/yoururl/**") .antMatchers("/scripts/**/*.{js,html}") .antMatchers("/bower_components/**") .antMatchers("/i18n/**") .antMatchers("/assets/**") .antMatchers("/swagger-ui/**") .antMatchers("/test/**") .antMatchers("/console/**");