部署Spring Boot + Angular应用程序时出现问题

时间:2019-11-09 16:19:24

标签: java angular spring-boot tomcat web-applications

我创建了一个带有Spring Boot后端的Angular应用程序,目前,我通过在Intellij和Angular App上运行服务器并使用“ ng serve”在本地工作, 我想将我的应用程序部署到Heroku。

我在互联网上进行了搜索,发现执行此操作的第一步是构建Angular应用并将“ dist”内容复制到“ src / main / resources / static”。

我复制了内容,然后尝试运行服务器(仍在本地运行)并通过浏览器访问以下地址的应用程序:“ http://localhost:3000/”(我将3000定义为Spring Boot应用程序端口)。 / p>

不幸的是,我没有看到我的Angular应用,我看到的是“ Whitelabel错误页面”

This application has no explicit mapping for /error, so you are seeing this as a fallback.
Sat Nov 09 17:26:21 IST 2019
There was an unexpected error (type=Forbidden, status=403).
Access Denied

我认为我的API上有一个“ JWTAuthorizationFilter”,因此我收到“访问被拒绝”错误-该API的使用者必须在请求标头中提供有效的JSON Web令牌。

我的问题是:我应该怎么做才能使“ http://localhost:3000/”返回Angular App而不访问API,我在这里遗漏了什么?

我的应用程序有两个控制器(@RestController),它们具有几个GET \ POST \ DELETE \ PUT请求。

然后我配置了一个JWTAuthenticationFilter和JWTAuthorizationFilter。

我仍然不了解Java spring项目部署中如何表达角度应用程序和Spring Rest API之间的分隔。

您能帮我解决此问题,还是指导我在哪里可以找到关于此问题的解释?

1 个答案:

答案 0 :(得分:0)

您想要做的是从spring boot tomcat嵌入式servlet容器中提供Angular App,因此安全性配置会影响静态角度文件所在的端点。

要解决您的问题,在安全配置类(扩展WebSecurityConfigurerAdapter的类)中,您只能限制实际的api端点,例如:

http.authorizeRequests().antMatchers( "/api/**").authenticated();