복붙노트

[SPRING] SPA 프론트 엔드 용 스프링 부트 구성

SPRING

SPA 프론트 엔드 용 스프링 부트 구성

전 프론트 엔드 파트가 리소스에 배치되는 어플리케이션이 있습니다. 나는 여러 가지 것들을 분리하고 싶다. 예를 들어 꿀꺽 꿀꺽 마시는 사람이 제공하는 UI 용 서버가 별도로 있습니다.

따라서 클라이언트 측에서 렌더링 한 모든 요청에 ​​대해 내 서버가 index.html을 반환해야한다고 가정합니다.

예 : 각도 라우팅으로 관리하는 'user / : id'라우트가 있으며 서버에 아무 것도 필요하지 않습니다. 서버가 어디서나 다시로드되거나 리디렉션되지 않도록 구성하려면 어떻게해야합니까?

내 보안 설정은 다음과 같습니다 (해당 사항에 대한 책임 여부는 알 수 없음).

public class Application extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.antMatcher("/**").authorizeRequests().antMatchers("/", "/login**", "/webjars/**", "/app/**", "/app.js")
                .permitAll().anyRequest().authenticated().and().exceptionHandling()
                .authenticationEntryPoint(new LoginUrlAuthenticationEntryPoint("/")).and().logout()
                .logoutSuccessUrl("/").permitAll().and().csrf()
                .csrfTokenRepository(csrfTokenRepository()).and()
                .addFilterAfter(csrfHeaderFilter(), CsrfFilter.class)
                .addFilterBefore(ssoFilter(), BasicAuthenticationFilter.class);
    } 

해결법

  1. ==============================

    1.라우팅의 경우이 가이드의 "Natural"Routes 사용 (특히 여기)에 따라 다음을 수행하는 컨트롤러를 추가해야합니다.

    라우팅의 경우이 가이드의 "Natural"Routes 사용 (특히 여기)에 따라 다음을 수행하는 컨트롤러를 추가해야합니다.

    @Controller
    public class RouteController {
        @RequestMapping(value = "/{path:[^\\.]*}")
        public String redirect() {
            return "forward:/";
        }
    }
    

    그런 다음 Spring Boot를 사용하여 /, 및 index.html로드에서 리소스를로드 할 수 있습니다. 경로는 Angular로 처리됩니다.

  2. ==============================

    2.Spring 데이터 나머지와 함께 Angular를 사용하는 경우, 앵귤러 앵귤러 위치 전략을 사용하는 것이 가장 직접적인 방법이라고 생각합니다.

    Spring 데이터 나머지와 함께 Angular를 사용하는 경우, 앵귤러 앵귤러 위치 전략을 사용하는 것이 가장 직접적인 방법이라고 생각합니다.

    앱 모듈의 공급자 배열에이를 넣으면됩니다.

    {제공 : LocationStrategy, useClass : HashLocationStrategy}

    그리고, 분명히 그것을 수입하십시오.

  3. from https://stackoverflow.com/questions/40769200/configure-spring-boot-for-spa-frontend by cc-by-sa and MIT license