【问题标题】:Spring Boot + Angular JS JBoss deploymentSpring Boot + Angular JS JBoss 部署
【发布时间】:2019-12-13 01:32:04
【问题描述】:

我创建了 Angular JS 项目,该项目在节点服务器中的 4200 端口下运行,并且基于 Spring Boot 的 REST 数据服务作为单独的项目在 Eclipse 中在 8080 端口下运行。 REST 服务 (RS) 部分使用基于 OAuth 的安全性并验证每个 access_token 请求。这作为单独的实体完全可以正常工作。

现在,我尝试在 WAR 的根文件夹中构建带有角度编译输出的单个 WAR,如果我访问应用程序(通过访问任何 URL) - 在 Angular NG-router Spring 启动安全出现之前并拒绝没有 OAuth 的请求验证。

@Override
public void configure(HttpSecurity http) throws Exception {
    http.antMatcher("/**").authorizeRequests().antMatchers("/error").permitAll().anyRequest().authenticated();
    http.csrf().disable();
    http.headers().frameOptions().disable();
    http.cors().configurationSource(new CorsConfigurationSource() {

        @Override
        public CorsConfiguration getCorsConfiguration(HttpServletRequest request) {
            CorsConfiguration config = new CorsConfiguration();
            config.setAllowedHeaders(Collections.singletonList("*"));
            config.setAllowedMethods(Collections.singletonList("*"));
            config.addAllowedOrigin("*");
            config.setAllowCredentials(true);
            return config;
        }
    });
}

这是我的安全配置文件。请告知是否将两个单独的 WAR 放入单个模块 EAR 中是否可以解决此问题。

【问题讨论】:

    标签: java spring spring-boot spring-security spring-oauth2


    【解决方案1】:

    查看my repository

    有一个项目结构可以生成单个战争。

    编辑: 也许你需要创建一个 proxy.conf.json 文件

    {
         "/api/*": {
           "target": "http://localhost:8080",
           "secure": false
         }
    }
    

    并将其添加到您的 angular.json 文件中的architect-serve-options-proxyConfig

    【讨论】:

    • 嗨,我尝试了您的示例存储库,但是当我在 jboss wildfly 中运行它时..找不到页面
    【解决方案2】:

    您的安全配置正在授权每个 url 模式。如果您希望在调用 API 进行身份验证/授权之前加载静态内容,请从安全配置中排除 .js、.css、.html 文件。

    【讨论】:

    • 我在上述模式中跳过了“/error”,目的是授权除“ERROR”之外的任何 URL。但它正在授权所有 URL 请求。请告诉我我在配置中做错了什么。
    猜你喜欢
    • 2017-12-03
    • 2018-01-25
    • 1970-01-01
    • 2018-06-21
    • 2020-12-20
    • 2017-07-10
    • 2020-06-17
    • 2017-09-21
    • 1970-01-01
    相关资源
    最近更新 更多