我正在开发一个具有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上运行服务器,另一个模块是模型集合。
1条答案
按热度按时间zxlwwiss1#
确保你的spring Boot build正确地进行,它将react build包复制到resource(
/static
)目录。此外,这可能需要更新Web安全策略以允许所有静态资源。这是react应用程序 Bootstrap 所需的。例如允许(*.js和 *.css)扩展。如果你得到了
WhiteLabel Error
页面,意味着react应用程序甚至还没有加载。仍然可以使用spring servlet层进行路由。