Вопросы о фильтрах Grails - PullRequest
5 голосов
/ 05 июня 2010

В основном у меня есть 2 вопроса относительно фильтров Grails.

  1. В соответствии с документацией Grails вы можете сделать что-то похожее на фильтр
if (userId != paramsUserId) {
    flash.message = "You can only modify yourself"
    redirect(action: 'list')
    return false
}

Если приведенное выше условие истинно, то как будет выполняться оператор return?

  1. Можно ли в моем фильтре перенаправить действие, которое также имеет перенаправление?

1 Ответ

6 голосов
/ 06 июня 2010

1 - Возвращение false из фильтра предотвращает выполнение других фильтров (и действия, если оно находится в фильтре перед). Браузер получит перенаправление 302 и перейдет к методу list, который вы просили перенаправить.

http://grails.org/doc/2.3.7/guide/single.html#filterTypes

2 - да. перенаправление на что-то еще, что перенаправляет нормально. Это действительно не имеет значения для браузера. Если вы посмотрите его в firebug, вы увидите, что такое редирект. Когда вы перенаправляете браузер, вы получаете ответ с кодом состояния HTTP 302 («Найдено»), этот ответ также включает в себя URL-адрес, который браузер должен запросить следующим (вещь, на которую вы перенаправляете, то есть URL-адрес для «списка»). метод в примере выше). Затем браузер запрашивает этот URL, и он ведет себя так, как если бы это был первый запрос.

Именно поэтому область видимости flash так полезна, что объекты в области видимости flash живут до следующего запроса, поэтому они охватывают перенаправления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...