Подтвердить что ты не робот

Spring запрос авторизации безопасности для url & method с использованием HttpSecurity

Можно ли разрешить отправку запроса на определенный URL с помощью org.springframework.security.config.annotation.web.builders.HttpSecurity?

Я использую HttpSecurity как:

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .addFilterAfter(new CsrfCookieGeneratorFilter(), CsrfFilter.class)
            .exceptionHandling()
            .authenticationEntryPoint(authenticationEntryPoint)
        .and()
            .rememberMe()
            .rememberMeServices(rememberMeServices)
            .key(env.getProperty("jhipster.security.rememberme.key"))
        .and()
            .formLogin()
            .loginProcessingUrl("/api/authentication")
            .successHandler(ajaxAuthenticationSuccessHandler)
            .failureHandler(ajaxAuthenticationFailureHandler)
            .usernameParameter("j_username")
            .passwordParameter("j_password")
            .permitAll()
        .and()
            .logout()
            .logoutUrl("/api/logout")
            .logoutSuccessHandler(ajaxLogoutSuccessHandler)
            .deleteCookies("JSESSIONID")
            .permitAll()
        .and()
            .headers()
            .frameOptions()
            .disable()
            .authorizeRequests()
                .antMatchers("/api/register").permitAll()
                .antMatchers("/api/activate").permitAll()
                .antMatchers("/api/authenticate").permitAll()
                .antMatchers("/api/logs/**").hasAuthority(AuthoritiesConstants.ADMIN)
                .antMatchers("/api/subscriptions").permitAll()
                .antMatchers("/api/**").authenticated();
}

Я хотел бы разрешить POST-запросы к/api/подписке. Только POST. Спасибо.

4b9b3361

Ответ 2

Я знаю, что этот вопрос немного устарел, но я не думаю, что отключение поддержки csrf является приемлемым ответом. У меня была такая же проблема, но я не чувствую себя хорошо, используя csrf.disable(). Вместо этого я добавил следующую строку в нижней части страницы внутри тегов формы.

<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />

Ответ 3

Просто укажите путь, который вам нужен для удаления Аутентификации вот так

    http
       .httpBasic().and()
       .authorizeRequests()
       .antMatchers("/employees" , "/employees/**")
       .permitAll().anyRequest().authenticated()
       .and().csrf().disable()