Сервер не маршрутизировал / вход в систему после обслуживания index.html - PullRequest
0 голосов
/ 28 февраля 2019

Поэтому я пытаюсь перенаправить Spring Security на мою страницу входа в систему, используя следующую конфигурацию.Он попытался перенаправить на / 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 Ответ

0 голосов
/ 28 февраля 2019

Где вы хотите, чтобы пользователь предоставил свои учетные данные login страницу или index.html?

Если вы запрашиваете любую страницу, пружина проверит, имеет ли он право предоставить такой ресурс, если нет, то Spring Securityперенаправит пользователя к точке авторизации (странице входа).

В вашем случае, когда вы запрашиваете index.html, тогда spring проверяет, есть ли у вас права на открытие такой страницы (у вас нет - плохая конфигурация), а затем springпопросить пользователя / пароль (базовая аутентификация).

Чтобы изменить его: 1. Разрешите index.html всем пользователям и там с помощью угловых и т. д. создайте форму входа, которая отправляет учетные данные через API на сервер (япредлагая поток OAUTH2 здесь).2. Удалите httpBasic () и создайте свою собственную страницу login, а затем Spring перенаправит вас на login

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...