我创建了一个带有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之间的分隔。
您能帮我解决此问题,还是指导我在哪里可以找到关于此问题的解释?
答案 0 :(得分:0)
您想要做的是从spring boot tomcat嵌入式servlet容器中提供Angular App,因此安全性配置会影响静态角度文件所在的端点。
要解决您的问题,在安全配置类(扩展WebSecurityConfigurerAdapter的类)中,您只能限制实际的api端点,例如:
http.authorizeRequests().antMatchers( "/api/**").authenticated();