>

따라서 다음 구성을 사용하여 스프링 보안을 로그인 페이지로 라우팅하려고합니다./login으로 라우팅하려고했지만 해당 오류 페이지를 찾을 수 없습니다.

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            .antMatchers("/login").permitAll()
            .anyRequest()
            .authenticated()
            .and()
            .httpBasic()
            .and().formLogin().loginPage("/login");
    }
}

서버가 항상 각도 페이지를 표시하기 위해 index.html을 제공하도록하기 위해 다음 구성을 수행했습니다.

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/**/*.css", "/**/*.html", "/**/*.js")
            .addResourceLocations("classpath:/static/");
    registry.addResourceHandler("/", "/**")
            .addResourceLocations("classpath:/static/index.html")
            .resourceChain(true)
            .addResolver(new PathResourceResolver() {
                @Override
                protected Resource getResource(String resourcePath, Resource location) throws IOException {
                    if (resourcePath.startsWith("/api") || resourcePath.startsWith("/api".substring(1))) {
                        return null;
                    }
                    return location.exists() && location.isReadable() ? location : null;
                }
            });;
}

이번 서버는 로그인 페이지로 라우팅되지 않았습니다. 대신 사용자/암호를 입력 할 수있는 기본 대화 상자가 나타납니다.


  • 답변 # 1

    사용자가 자신의 자격 증명을 제공하기 위해 어디에서 원하는가?  페이지 또는 login ?

    페이지 스프링을 요청하는 경우 해당 스프링에 리소스를 제공 할 권한이 있는지 확인하면 스프링 보안이 사용자를 권한 부여 지점 (로그인 페이지)으로 리디렉션합니다.

    귀하의 경우 index.html 를 요청할 때  그런 다음 스프링은 그러한 페이지를 열 수있는 권한이 있는지 확인합니다 (잘못된 구성은 아닙니다). 봄은 사용자/암호 (기본 인증)를 묻습니다.

    변경하려면 :  1. 앵귤러 등을 사용하여 index.html을 모든 사용자에게 허용하십시오. api를 통해 서버로 자격 증명을 보내는 로그인 양식을 만드십시오 (여기서는 OAUTH2 흐름을 제안합니다). 2. httpBasic ()을 제거하고 자신의 index.html 를 구현하십시오.  그런 다음 봄은 당신을 login 로 리디렉션합니다.

    login

관련 자료

  • 이전 aspnet webforms의 data-id 속성을 통해 행에 어떻게 액세스합니까?
  • 다음 c# - 텍스트 값에 대한 WPF 텍스트 상자 유효성 검사 제어 템플릿 트리거