为了账号安全,请及时绑定邮箱和手机立即绑定

带有代理的reactjs无法从Spring Boot后端获取匿名会话

带有代理的reactjs无法从Spring Boot后端获取匿名会话

慕姐8265434 2021-04-02 12:10:12
我正在尝试使用create-react-app启动我的spring-boot项目的前端。我使用redis来存储会话。由于某些原因,我实际上需要为匿名用户启用会话生成。以下代码是我用于春季启动的安全性配置:@Configuration@EnableWebSecuritypublic class SecurityConfig extends WebSecurityConfigurerAdapter {    @Override    protected void configure(HttpSecurity http) throws Exception {        //@formatter:off        http            .formLogin()                .loginPage("/login")                    .permitAll()                .loginProcessingUrl("/form-login")                .and()            .cors()                .and()            .csrf()                .disable()            .authorizeRequests()                .antMatchers("/restricted/**")                    .authenticated()                .antMatchers("/**")                    .permitAll()                .and()           .sessionManagement()                .sessionCreationPolicy(SessionCreationPolicy.ALWAYS);        //@formatter:on    }}我已经通过在spring-boot项目下的“ static”文件夹中有一个非常简单的index.html进行了测试。然后我转到“ http:// localhost:8080 ”,然后看到了会话cookie。然后,我删除了“ index.html”文件,并使用代理配置启动react应用。默认情况下,新的URL为“ http:// localhost:3000 ”。我确实看到了默认的reactjs启动页面,但是我再也没有得到任何会话cookie。我的create-react-app在“ package.json”中的代理设置如下:"proxy": "http://localhost:8080"我还测试了仅当我直接转到“ http:// localhost:8080 ”而不是端口3000时,仍然可以获取会话cookie 。任何帮助表示赞赏。提前非常感谢。
查看完整描述

1 回答

?
Cats萌萌

TA贡献1805条经验 获得超9个赞

好的,在等待了几天没有任何答案之后,我自己进行了一些研究并找到了答案。我决定在这里发布答案,以防其他人遇到同样的问题。

create-react-app代理的问题在于它是一个转发代理。因此,会话cookie不能与正向代理一起很好地工作。遗憾的是,没有解决此问题的简便方法,但是有一种解决方法。

如上所述,我可以肯定地通过直接访问后端URL来获取会话cookie。因此,如果我想使用代理获取会话cookie,则应在前端放置一些代码以首先访问后端,然后在应用程序启动时将会话cookie放置在标头中。然后继续监视前端,并在会话到期时重新获取该会话。

为了最佳实践,后端应该真正具有一个模拟服务,该模拟服务不具有会话,登录名和令牌,但具有模拟数据。由于前端并不真正在乎会话,访问令牌或登录的工作方式,因此这些都是后端工作。前端只需要获取数据,然后显示数据。

但是实际上拥有一台模拟服务器可能会花费一些时间,因此在每种情况下都不值得这样做。

因此,如果您不想编写模拟服务器,则可以使用代理服务器,但前端要有一些技巧以实际获取会话。或者,您构建整个前端应用程序并将其放在spring boot应用程序中的“ static”文件夹下。

对我来说,我宁愿将前端和后端分开,也不愿将它们放在一起。


查看完整回答
反对 回复 2021-04-14
  • 1 回答
  • 0 关注
  • 139 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信