【发布时间】:2015-12-10 23:26:17
【问题描述】:
我在服务器上有 Tomcat 8、Spring 4.2 和 Spring security 4.0。我尝试实施支付集成。成功付款后,使用 GET 向我的服务器请求付款服务到 http://www.example.com/p/paysera/callback?data=cHJvamVjdGlkPTIzMTY0Jm9yZGVyaWQ... 并等待我的“OK”,但我的服务器返回 Expected CSRF token not found. Has your session expired?。但如果我将此网址直接复制/粘贴到浏览器,一切正常。
Spring 安全配置:
http
.httpBasic()
.and()
.authorizeRequests()
.antMatchers(..,"/p/**",..).permitAll()
.anyRequest().authenticated().and()
.csrf().csrfTokenRepository(csrfTokenRepository()).and()
.addFilterAfter(csrfHeaderFilter(), CsrfFilter.class);
控制器:
...
@RequestMapping(value = "/p/paysera/callback", method = RequestMethod.GET)
public @ResponseBody String paysera_callback(@RequestParam("data") String data,@RequestParam("ss1") String ss1){ ...
【问题讨论】:
-
您是否在 JSP 代码中添加了 CSRF 令牌。
-
我的控制器返回字符串不使用jsp
-
GET 不应导致 CSRF 错误。您确定付款服务执行的是 GET 而不是 POST?
-
但我不是在说你的控制器……你没看吗?
-
#holmis83 是的,支付服务执行 GET。我尝试将控制器更改为 POST ,但出现了一些错误。 #我们是博格,如果不是关于控制器,你正在谈论什么?
标签: java spring spring-security