Java 如何在我的React SpringBoot应用程序中使用Spring安全性

Java 如何在我的React SpringBoot应用程序中使用Spring安全性,java,reactjs,spring,spring-boot,spring-security,Java,Reactjs,Spring,Spring Boot,Spring Security,首先,我在springboot的react with backend实现中做了前端 在开发时,我在package.json中设置了“代理”:http://localhost:8080/“,这样它就可以将我的请求代理给localhost:8080,这是spring的tomcat服务器 对于生产,我使用前端maven插件构建react应用程序,使用maven antrun插件将react生产构建复制到后端目录(target/classes/public),最后部署到heroku 在将spring安全

首先,我在springboot的react with backend实现中做了前端

在开发时,我在package.json中设置了
“代理”:http://localhost:8080/“,
这样它就可以将我的请求代理给localhost:8080,这是spring的tomcat服务器

对于生产,我使用前端maven插件构建react应用程序,使用maven antrun插件将react生产构建复制到后端目录(target/classes/public),最后部署到heroku

在将spring安全性添加到我的项目中之后,我意识到它增加了对“/login”上登录页面的支持,我通过更改
http.loginPage()
,将其更改为“/mylogin”

@Override
protected void configure(HttpSecurity http) throws Exception{
  http.authorizeRequests()
      .anyRequest()
      .authenticated()
      .and()
      .formLogin()
      .loginPage("/my-login")
      .permitAll(true)
      .and()
      .logout()
      .logoutSuccessUrl("/my-login?logout")
      .permitAll();
  http.cors();
现在的问题是我的登录页面在react应用程序目录中,我不能在spring boot目录中有另一个登录页面。 我尝试使用一个.jsp登录页面作为中间层,它将与Spring安全性进行对话,并从react方面对其发出post请求,但实际上无法使用这种方法

那么,有没有其他方法可以让react提供登录页面,而react仍然可以与SpringSecurity交互

谢谢


我刚刚开始使用spring…但通常对于React应用程序,身份验证是无状态的…我们设置了包含令牌的授权头(例如:jwt),并且有一个注销端点使令牌无效。因此,在注销请求中使用200=“/my login?logout”。“客户端”路由器将任何路由中的403重定向到“/我的登录”

您所采取的方法要求视图是“服务器端”渲染的。据我所知,React SSR(服务器端渲染)是NodeJS服务器独有的


Reactjs做客户端渲染,因为它是一个Javascript库,而如果您使用springboot作为后端,您将不得不制作jsp页面来做服务器端渲染。它们一般都不是互补的。对于react应用程序,您通常应该使用RESTAPI作为后端,并根据响应在网页中呈现更改

现在,如果您确定您只想要一个springboot应用程序作为后端,那么您必须在springboot的react to jsp页面中转换登录html页面,并在那里呈现您的组件。登录成功后,您将把用户重定向到另一个jsp页面,该页面将呈现整个react应用程序

所以基本上,您的react和spring引导应用程序不会在不同的端口上运行,而是组合成单个spring引导应用程序