我创建了两个应用程序,即App-Server和App-Client。
App Server是Spring Boot 2和Spring Security OAuth2。
App-Client是Angular JS 6。
当我分别运行两个应用程序时,它们都工作正常,但是当我尝试使用App-Server提供静态内容(应用程序客户端)时,则无法正常工作。
我正在使用以下代码将静态文件添加到App-Server。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-resources</id>
<phase>validate</phase>
<goals><goal>copy-resources</goal></goals>
<configuration>
<outputDirectory>${basedir}/target/classes/static/</outputDirectory>
<resources>
<resource>
<directory>${basedir}/../app-client/dist/app-client</directory >
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
我的网络安全外观
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
@Order(Ordered.HIGHEST_PRECEDENCE)
protected void configure(HttpSecurity http) throws Exception {
http
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.csrf().disable()
.authorizeRequests()
.antMatchers("/about","/signup","/oauth/token","/users/otp").permitAll()
.anyRequest().authenticated()
.and().logout().logoutSuccessUrl("/").permitAll()
.and()
.httpBasic()
.realmName(REALM);
}
//Some other code .....
}
任何我的ResourceServerConfig如下所示
@Configuration
@EnableResourceServer
public class ResourceServerConfig extends ResourceServerConfigurerAdapter
{
@Autowired
private TokenStore tokenStore;
@Override
public void configure(ResourceServerSecurityConfigurer resources)throws Exception{
resources.resourceId("app-server-api").tokenStore(tokenStore);
}
@Override
public void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/","/users/otp", "/index.html","/resources/**","/images/**")
.permitAll()
.antMatchers("/v1/**")
.authenticated();
}
}
每当我尝试访问任何静态文件时,我都没有任何回复。
但是在本地,我可以看到
在以下位置未找到带有URI [/api/index.html]的HTTP请求的映射: 名称为“ dispatcherServlet”的DispatcherServlet
...
答案 0 :(得分:0)
我所做的更改很少,首先,我(通过解压缩)检出jar,发现没有可用于“静态内容”的文件。
经过几次试用和运行,我发现在pom.xml中,我需要正确映射来自应用程序客户端的ui内容。我做了以下事情。
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-resources</id>
<phase>validate</phase>
<goals><goal>copy-resources</goal></goals>
<configuration>
<outputDirectory>${basedir}/target/classes/static/</outputDirectory>
<resources>
<resource>
<directory>${basedir}/../app-client/dist</directory >
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
请注意,我们需要在..
标记下使用<directory>
使其与目录结构匹配。
希望这对某人有所帮助。