Как обойти проверку безопасности в логах
У меня есть метод контроллера, который возвращает данные 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. Вам, вероятно, следует переименовать свой метод, чтобы избежать каких-либо проблем.