Весеннее всплывающее окно не закрывается - PullRequest
0 голосов
/ 08 декабря 2018

Я использую Spring Secuirty для моего приложения.

После ввода неправильного имени пользователя или пароля я хотел показать сообщение о неверных учетных данных, и всплывающее окно должно закрыться.

В настоящее время происходит следующее: если я ввожу неверные учетные данные и нажимаю кнопку «Вход», всплывающее окно остается в другом месте, и в следующий раз при отмене всплывающего окна отображается сообщение 401.

Как настроить в этомКстати?

Я изменил свой код следующим образом.Теперь всплывающее окно вообще не отображается.

@Component
public class MyBasicAuthenticationEntryPoint extends BasicAuthenticationEntryPoint {

    @Override
    public void commence(final HttpServletRequest request, final HttpServletResponse response, final AuthenticationException authException) throws IOException, ServletException {
        //response.addHeader("WWW-Authenticate", "Basic realm=\"" + getRealmName() + "\"");
        response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
        final PrintWriter writer = response.getWriter();
        writer.println("HTTP Status " + HttpServletResponse.SC_UNAUTHORIZED + " - " + authException.getMessage());
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        setRealmName("testrealmname");
        super.afterPropertiesSet();
    }

}

Полный код

@Configuration
@EnableWebSecurity
public class CustomWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {

    @Autowired
    private MyBasicAuthenticationEntryPoint authenticationEntryPoint;

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication().withUser("user1").password(passwordEncoder().encode("user1"))
                .authorities("ROLE_USER");
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().antMatchers("/securityNone").permitAll().anyRequest().authenticated().and().httpBasic()
                .authenticationEntryPoint(authenticationEntryPoint);
        http.csrf().disable().headers().frameOptions().disable();
        http.addFilterAfter(new CustomFilter(), BasicAuthenticationFilter.class);
    }

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
}

@ Открытый класс компонента MyBasicAuthenticationEntryPoint extends BasicAuthenticationEntryPoint {

@Override
public void commence(final HttpServletRequest request, final HttpServletResponse response, final AuthenticationException authException) throws IOException, ServletException {
    //response.addHeader("WWW-Authenticate", "Basic realm=\"" + getRealmName() + "\"");
    response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
    final PrintWriter writer = response.getWriter();
    writer.println("HTTP Status " + HttpServletResponse.SC_UNAUTHORIZED + " - " + authException.getMessage());
}

@Override
public void afterPropertiesSet() throws Exception {
    setRealmName("testrealmname");
    super.afterPropertiesSet();
}

}

   public class CustomFilter extends GenericFilterBean {

        @Override
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
            chain.doFilter(request, response);
        }

    }

Я ссылался на следующие темы.

Spring Security выдает ошибку «Причина: неверные учетные данные» в пользовательском интерфейсе, но правильно находит пользователя при входе в систему

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