当前位置: 首页 > 知识库问答 >
问题:

带有代理的reactjs没有从Spring Boot后端获得匿名会话

顾高扬
2023-03-14

我试图使用create-react-app来启动我的spring-boot项目的前端。

我使用redis存储会话。

出于某种原因,我实际上需要为匿名用户启用会话生成。

@Configuration
@EnableWebSecurity
public 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
    }
}
"proxy": "http://localhost:8080"

任何帮助都很感激。提前非常感谢。

共有1个答案

宋铭
2023-03-14

好吧,大家,在等了几天没有任何答案后,我自己做了一些研究,找到了答案。我决定把答案贴在这里,以防其他人有同样的问题。

create-react-app代理的问题在于它是一个前向代理。因此,会话cookie并不能很好地与前向代理一起工作。可悲的是,没有简单的解决方案解决这个问题,但有一个变通办法。

正如我上面提到的,我肯定可以通过直接访问后端URL来获得会话cookie。因此,如果我想通过使用代理获得会话cookie,我应该先在前端放一些代码来访问后端,然后在应用程序启动时将会话cookie放入头部。然后继续监视前端,并在会话过期时重新获取会话。

 类似资料:
  • 关于 ReactJS 在开发和生产中应该如何工作,我有几个问题。我的 ReactJS 应用程序是从创建应用样板开始构建的。我有一个Spring靴后端在端口 8080 上侦听。我注意到的第一件事是,如果我设置一个这样的代码来发出请求,代码就会挂起: 我需要把它转换成: 然后添加一行: 这工作得很好。问题是,当我把它放在一个正式生产环境(或集成环境)中时,我有一个像http://www.mywebsi

  • 我已经创建了一个组件,在那里我通过获取路由名称,它工作正常,并给我一个路由名称,但我想从路由名称中删除正斜杠。我是ReactJS的初学者,有人能帮我解决这个问题吗?

  • 我使用的是Spring框架和hibernate,我在其中映射了@OneToMany,当我加载类别来创建新产品时,我得到一个错误:在hibernate中用映射惰性地初始化集合失败,我以前看到过一些说明,请删除FectType。懒惰和我这样做了,但仍然没有效果 类别JAVA Product.java 我在用JPA 这是控制器的代码 product-form.jsp 但我得到错误 "我不知道哪里错了,我

  • 所涉及的项目: memdrill-data 数据-使用 memdrill-data是一个Spring Roo管理的项目。这里没有web组件。我只是: 这是我得到的: 因此,当我试图访问懒惰加载的数据以填充LobString POJO时,没有会话在进行,会话崩溃。 我最接近(在我的代码中,即,不是我所依赖的库中)放入LobString访问代码(例如,item.getContent().getId()

  • 问题内容: 我有一个看起来像这样的错误: 无法初始化代理-没有会话 我正在使用java,hibernate和spring。尝试生成PDF文档时会出现此错误,我正在按照以下步骤即时生成它并存储在数据库中。 我通过POST方法向应用发送了请求。这将即时生成PDF并显示给用户。 在该请求之后,我发送了另一个请求,但是通过ajax发送了一个请求。这将生成相同的PDF,但会将其保存在数据库中。 该错误表明由

  • 因为我是在中配置序列化程序的,所以我不能在构造函数参数中传递。