2015-04-23 1 views
1

Я использую Grails 2.3.3. Есть ли лучший способ перенаправлять на другой контроллер/действие из представления автоматически, если существуют определенные условия, в противном случае продолжать отображать представление, а не делать это в самом действии?Перенаправление автоматически в виде

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

Если я могу сделать это в представлении, легко добавить этот код проверки входа в _header.gsp, чтобы произвести все страницы. Это было бы намного быстрее, чем иметь возможность кодировать каждое действие в каждом для каждого представляющего интерес интереса.

+0

<г: если тест = "$ {session.loggedin == 'истинный '} "> сделать что-то Сделайте что-нибудь еще ... Но это, возможно, неправильный способ обойти это - взглянуть на фильтры ... https://github.com/vahidhedayati/kchat посмотреть здесь который я объяснил, как расширить фильтры - это будет grails2 с тех пор, пока не уверены, но не думаю, что фильтры в настоящее время поддерживаются под grails 3.0.X – Vahid

ответ

0

Да, вы можете сделать это с помощью специального taglib Grails, выплевывая код javascript, который перенаправляет страницу на другой URL-адрес, если вы не вошли в систему. Но это уменьшит количество пользователей для тех, кто будет использовать ваш продукт так как вы сначала просматриваете эту страницу, а затем используете Javascript, вы перенаправляете их обратно на экран входа в систему (если не вошли в систему).

Я бы рекомендовал вам еще три решения:

  1. Используйте Grails игровой filters, чтобы защитить свои действия для авторизованных пользователей,
  2. Вы можете использовать пользовательские Java аннотаций для защиты действия автоматически, написав некоторый фрагмент кода,
  3. Чтобы пропустить все вышеупомянутые два решения, вы можете использовать широко используемый плагин Grails для аутентификации с именем spring security core плагин, который обеспечивает простой способ проверки подлинности & и использует основную библиотеку Spring Java сцена, которая, в свою очередь, огромная и удивительная вещь для интеграции.
+0

Спасибо за все эти предложения. То, с чем я столкнулся, - это турнир beforeInterceptor, который позволяет передавать все действия контроллера через действие перехватчика перед просмотром. – mikek

+0

Пришлось повторить этот комментарий - не удалось отредактировать ..... Спасибо за все эти предложения. То, что я встретил, это функция beforeInterceptor, которая позволяет передавать все действия контроллера через действие перехватчика перед просмотром. Это позволяет мне выполнять проверки, такие как проверка входа в систему для ВСЕХ действий или фильтрация по определенным действиям - например, проверка прав пользователей на определенные виды отображения. Есть ли какие-либо проблемы, которые я должен знать об использовании этой функции, такой как устаревшая в более поздних версиях, я использую grail 2.3.3? – mikek

0

так же легко, как определить редирект простые JS на основе вашей GSP, или еще лучше в разделяемой шаблоне:

<sec:ifNotLoggedIn> 
    <g:javascript> 
    document.observe('dom:loaded', function(){ 
     document.location = '${createLink(controller:'login', action:'doLogin')}'; 
    }); 
    </g:javascript> 
</sec:ifNotLoggedIn>