Как обойти проверку безопасности в логах

У меня есть метод контроллера, который возвращает данные JSON и не имеет логики проверки безопасности.

def getJsonData(){
 // return json

}

Я делаю ajax-запрос со страницы php с другого сервера (кросс-домен).

      $.ajax({
             type: "GET",
             url: "http://localhost:8080/training/getJsonData",
             data: { ListID: '1'},
              dataType: "jsonp",
              success: function(data) {
               alert('Hi'+data);
                $("#success").html(data);

            }
         });

Данные не приходят с сервера, они работают только тогда, когда пользователь вошел в систему на сервере приложений. Как обслуживать эти запросы без проверки входа в систему в граалях.

2 ответа

Решение

Добавлять IS_AUTHENTICATED_ANONYMOUSLY выше вашего действия Грааля, как

@Secured('IS_AUTHENTICATED_ANONYMOUSLY')
def getJsonData() {
    ....
}

РЕДАКТИРОВАТЬ...................................................................................

Хорошо, тогда, возможно, вы используете отображение URL в файле конфигурации ( Простая карта в Config.groovy). Изменить там, как

grails.plugins.springsecurity.interceptUrlMap = [
    ...
    '/training/getJsonData/**': ['IS_AUTHENTICATED_ANONYMOUSLY'],
    ...
]

Это зависит от того, как настроено ваше приложение в Spring Security.

Если вы используете конфигурацию по умолчанию:

grails.plugins.springsecurity.securityConfigType = "Annotation"

Вы можете либо аннотировать метод для действия getJsonData с @Secured('IS_AUTHENTICATED_ANONYMOUSLY') или поставить конфигурацию в Config.groovy:

grails.plugins.springsecurity.controllerAnnotations.staticRules = [
   '/training/getJsonData/**': ['IS_AUTHENTICATED_ANONYMOUSLY'],
]

В противном случае, если вы используете InterceptUrlMap:

grails.plugins.springsecurity.securityConfigType = "InterceptUrlMap"

Вы должны настроить запись в вашем interceptUrlMap следующим образом

grails.plugins.springsecurity.interceptUrlMap = [
   '/training/getJsonData/**':    ['IS_AUTHENTICATED_ANONYMOUSLY'],
   // ...
]

Проверьте соответствующий раздел в документации плагина Spring Security.

Также остерегайтесь использования методов с именем getFoo в контроллерах они вызываются при создании контроллера - это описано на странице Gotchas в вики Grails. Вам, вероятно, следует переименовать свой метод, чтобы избежать каких-либо проблем.

Другие вопросы по тегам