2015-09-04 4 views
0

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

@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?

UPDATE 1: запросы GET разрешены для авторизованных пользователей

+0

Здравствуйте, Петр. Вы решили проблему? –

ответ

1

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

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

  2. добавить маркер CSRF к вашему JSON. Подробнее об этом вы можете прочитать на странице this link.

+0

У меня уже отключен csrf - см. Фрагмент кода в вопросе. –

Смежные вопросы