переадресация URL, обновление div вместо глобального перенаправления - PullRequest
0 голосов
/ 31 января 2012

Я должен перенаправить поток своего веб-сайта на страницу входа, когда пользователь нажимает любую ссылку на странице после истечения сеанса (либо по тайм-ауту, либо вручную выходит из другого окна)

Я добавилследующий фрагмент кода в моем main.gsp (входит в каждый gsp)

<script>
  $.ajaxSetup({
            statusCode: {
            401: function(){

            // Redirect the to the login page.
            location.href = "/gra/login/auth";
            }
            }
            });
  </script>

Раньше это работало нормально, но на этом этапе мы внесли некоторые изменения в наше приложение (миграция оракула, новый пользовательский интерфейс, а такжеплагин Spring Security)

Теперь он не перенаправляет всю страницу на страницу входа, но содержимое обновляется только в целевом контейнере, который обновляется по щелчку ссылки (страница выхода выходит только в этом div). Вот какраньше работал без кода выше.Как сделать эту страницу глобальной страницей вперед?

Обновление: я только что проверил ее в firebug и обнаружил, что при нажатии на ссылку после истечения времени ожидания сеанса в ответ генерируется 302 (временно перемещенный) кодового номера, а не 401?

1 Ответ

0 голосов
/ 31 января 2012

Это отличная задача для использования грааля. Фильтры (Документация) .

Приведенный ниже код будет перехватывать все контроллеры и все действия, а belore они вызываются и проверяют, что сеанс действителен Если это не удается, он перенаправляет на страницу входа.

Вы должны изменить условие в операторе if, чтобы правильно проверить сеанс.

class SecurityFilters {
   def filters = {
       sessionCheck(controller: '*', action: '*') {
           before = {
              if (!session && !actionName.equals('login')) {
                  redirect(uri: '/gra/login/auth')
                  return false
               }
           }
       }
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...