我在服务器上有Tomcat 8,Spring 4.2和Spring Security 4.0。我尝试实施付款整合。成功完成付款流程后,使用GET http://www.example.com/p/paysera/callback?data=cHJvamVjdGlkPTIzMTY0Jm9yZGVyaWQ...向我的服务器付款服务请求,并等待我的“确定”,但我的服务器返回Expected CSRF token not found. Has your session expired?。但是,如果我将这个网址直接复制/粘贴到浏览器中,一切正常。

春季安全配置:

    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){ ...

最佳答案

我在Spring安全配置中添加了.csrf().ignoringAntMatchers("/p/paysera/callback")

07-27 13:45