Spring Boot React routes不支持嵌入式Sping Boot 项目

dldeef67  于 2023-04-30  发布在  Spring
关注(0)|答案(1)|浏览(141)

我正在开发一个具有React前端和Springboot后端的应用程序。React应用程序位于SpringBoot应用程序中,并与之一起部署。我已经在应用程序中添加了Spring Security ,主要的重点是添加一个自定义的登录页面,并在登录成功时显示简单的登录页面(它使用maven-frontend插件)。虽然我已经配置了路由和安全配置,但它不能正常工作。
这是我的安全配置。

@Configuration
@EnableWebSecurity
public class DefaultWebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {

        http
                .authorizeRequests()
                .antMatchers("/", "/dashboard").authenticated()
                .anyRequest().permitAll()
                .and()
                .formLogin()
                .loginPage("/login")
                .defaultSuccessUrl("/dashboard")
                .permitAll()
                .and()
                .logout()
                .logoutSuccessUrl("/logout")
                .permitAll();
    }

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication().withUser("user").password("user").roles("employee");
    }
}

这是我的React应用程序路由,

function App() {
    return (
        <div className="wrapper">
            <BrowserRouter>
                <Routes>
                    <Route path="/login" element={<Login />}>
                    </Route>
                    <Route path="/dashboard" element={<Dashboard />}>
                    </Route>
                </Routes>
            </BrowserRouter>
        </div>
    );
}

我的包裹。json**

{
  "name": "reactapp",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "bootstrap": "^4.2.1",
    "jquery": "^3.3.1",
    "popper.js": "^1.14.6",
    "react": "^16.7.0",
    "react-dom": "^16.7.0",
    "react-router-dom": "^6.10.0",
    "react-scripts": "2.1.3"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": [
    ">0.2%",
    "not dead",
    "not ie <= 11",
    "not op_mini all"
  ],
  "proxy": "http://localhost:8090"
}

当我单独启动react应用程序并启动url(localhost:3000/login和/dashboard)时,它可以正常工作。但是使用Springboot应用程序,当我启动localhost:8090/login时,它会显示WhiteLabel错误为404
PS:整个spring应用程序还有两个其他模块,一个是在8080上运行服务器,另一个模块是模型集合。

zxlwwiss

zxlwwiss1#

确保你的spring Boot build正确地进行,它将react build包复制到resource(/static)目录。此外,这可能需要更新Web安全策略以允许所有静态资源。这是react应用程序 Bootstrap 所需的。例如允许(*.js和 *.css)扩展。
如果你得到了WhiteLabel Error页面,意味着react应用程序甚至还没有加载。仍然可以使用spring servlet层进行路由。

相关问题