Grails HttpSecurity - разрешение POST

У меня в приложении Grails 3.0.3 довольно простая конфигурация безопасности:

@Configuration
@EnableWebSecurity
class SecurityConfiguration extends WebSecurityConfigurerAdapter {

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        .authorizeRequests()
            .antMatchers('/admin/**').hasAnyRole('ADMIN')
            .antMatchers('/**').hasAnyRole('USER', 'ADMIN')
            //.antMatchers('/').permitAll()
            .and()
        .formLogin().permitAll()
            .and()
        .logout().permitAll()

    http.headers().frameOptions().disable()

    http.csrf().disable()
}

У меня также есть несколько классов DomainClasses, которые используют аннотацию @Resource

@Resource(uri="/myresource",formats=['json'])

Когда отключаю аутентификацию для пути / ** - все работает нормально. Но когда я оставляю аутентификацию для / ** включенной, поэтому включая / myresource, он больше не принимает запросы POST. Он возвращает 405 недопустимый метод. Как разрешить запросы POST с помощью HttpSecurity в Grails 3?

ОБНОВЛЕНИЕ 1: запросы GET разрешены для аутентифицированных пользователей


person Piotr Zakrzewski    schedule 04.09.2015    source источник
comment
Здравствуйте, Петр. Решили проблему?   -  person Ignacio Ocampo    schedule 07.06.2016


Ответы (1)


Я только что столкнулся с той же проблемой. Решить эту проблему можно двумя способами:

  1. отключить защиту csrf с помощью HttpSecurity http.csrf().disable() в методе настройки

  2. добавьте токен csrf в свой JSON. Подробнее об этом вы можете прочитать на эту ссылку.

person Serge Borzikh    schedule 12.11.2015
comment
У меня уже отключен csrf - см. Фрагмент кода в вопросе. - person Piotr Zakrzewski; 12.11.2015