首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React + springboot

React + springboot
EN

Stack Overflow用户
提问于 2019-01-24 19:12:44
回答 2查看 9.3K关注 0票数 9

我在一个springboot项目中有一个react应用程序,react应用程序使用rest调用来获取/设置内容。实际上,我已经在配置适配器.csrf().disable()中禁用了csrf,但我想修改一下。如何在react和springboot之间处理csrf令牌?

我认为我应该通过我的axios调用传递令牌,但是我如何获得它呢?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-25 17:14:10

您需要将CSRF-TOKEN保存到cookie中,并将其与请求头一起发送回来。

SecurityConfig类。

启用csrftokenrepsitory

代码语言:javascript
复制
         .csrf().csrfTokenRepository(csrfTokenRepository()).and().addFilterAfter(new CsrfHeaderFilter(), CsrfFilter.class).addFilterAfter(new XSSFilter(), CsrfFilter.class);

添加csrfTokenRepository

代码语言:javascript
复制
       private CsrfTokenRepository csrfTokenRepository() {
    HttpSessionCsrfTokenRepository repository = new HttpSessionCsrfTokenRepository();
    repository.setHeaderName(X_CSRF_TOKEN);
    return repository;
}

在react中,您可以从cookie访问token。

代码语言:javascript
复制
    csrfToken=  cookies.get('XSRF-TOKEN');

在标题中按如下方式发送。

代码语言:javascript
复制
     headers: {
    'X-XSRF-TOKEN': this.csrfToken,
    'Accept': 'application/json',
    'Content-Type': 'application/json'
  },

https://github.com/supun/okta-spring-boot-react-crud-example/blob/master/src/main/java/com/okta/developer/jugtours/config/SecurityConfiguration.java

票数 7
EN

Stack Overflow用户

发布于 2019-09-19 23:33:13

上面的答案我认为它使用了一个旧的spring安全版本。有一个简单的方法。对于springboot后端,你可以这样做

代码语言:javascript
复制
.csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())

在react中,您可以按照答案中的方法进行操作,但不要忘记使用<CookiesProvider>来包装您返回的内容

或者,您可以直接从document.cookie获取令牌。应该有一个以XSRF-TOKEN=开头的对

并且不应将csrf应用于GET方法。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54345301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档