几乎没有上下文可以解决这个问题,我在Springboot中对前端实现做了反应。
在开发过程中,我在package.json中设置了"proxy": "http://localhost:8080/",
,以便它可以将我的请求代理到Spring的tomcat服务器localhost:8080。
对于生产,我使用frontend-maven-plugin构建react应用程序,并使用maven-antrun-plugin将React生产构建复制到后端目录(target / classes / public),最后部署到heroku。
在为我的项目添加了春季安全性之后,我意识到它为“ / login”上的登录页面添加了支持,通过将http.loginPage()
更改为“ / my-login”,
@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 Security进行对话,并从react方面对其进行发布请求,但实际上无法使用此方法做任何事情。
那么还有其他方法可以让React提供登录页面,而该页面仍然可以与Spring安全性交互吗?
谢谢
Paras
答案 0 :(得分:0)
我刚开始使用spring ...但是通常在React应用程序中,身份验证是无状态的...我们设置了包含令牌的Authorization标头(例如Ewt:jwt),并且有一个注销端点,该端点使令牌。因此,登出请求上的200 =“ / my-login?logout”。然后,“客户端”路由器会将任何路由中的403重定向到“ / my-login”
您所采用的方法要求将View渲染为“服务器端”。据我所知,React SSR(服务器端渲染)是NodeJS服务器专有的。
答案 1 :(得分:0)
Reactjs进行客户端渲染,因为它是一个Javascript库,但是如果将springboot用于后端,则必须制作执行服务器端渲染的jsp页面。它们通常彼此不互补。对于React应用,通常应将REST API用作后端,并根据响应在网页中呈现更改。
现在,如果您确定只希望将Spring Boot应用程序用作后端,则必须将login html页面转换为对springboot的jsp页面的响应,然后在其中呈现组件。登录成功后,您会将用户重定向到另一个jsp页面,该页面将呈现您的整个React应用程序。
因此,基本上,您的react和spring boot应用程序不会在不同的端口上运行,并且将被组合为单个spring boot应用程序。