2011-01-13 5 views
5

У меня есть действие, которое позволяет пользователю сменить пароль. Когда все будет хорошо, я хотел бы выйти из него и показать сообщение, что все прошло хорошо, и теперь ему нужно войти в систему, используя свой новый пароль.Grails Spring Security Core logout message

Я пробовал:

flash.message = "You may now login with your new password" 
redirect (controller: 'logout') 

Дело в том, что контроллер Выход делает редирект:

redirect uri: SpringSecurityUtils.securityConfig.logout.filterProcessesUrl 

И моя вспышка сообщение больше не существует, когда пользователь, безусловно, вошел туда и обратно на главной странице. Любые идеи, как заставить его работать, а может быть, обходные пути?

+1

Просто любопытному, почему вы входе их? Если бы я использовал систему, я не ожидал, что ее выйдут из системы после смены пароля. –

+0

Нет особых причин. Я просто думаю, что так лучше;) – jjczopek

ответ

3

LogoutController находится только в качестве удобства. Там есть фильтр, который перехватывает его редирект и выполняет логику выхода из системы, так что вы можете просто перенаправить на этот раздел:

flash.message = "You may now login with your new password" 
redirect uri: SpringSecurityUtils.securityConfig.logout.filterProcessesUrl 
+3

Действительно ли это работает? Когда я попробовал, это не так. Если я перенаправляюсь к 'filterProcessesUrl' вместе с' flash.message', флэш-сообщение доступно для 'filterProcessesUrl', но затем перенаправляется на' logout.afterLogoutUrl', а затем теряет любое флеш-сообщение во втором перенаправлении. Этот четырехлетний вопрос о грабелях говорит об этом http://jira.grails.org/browse/GRAILS-2336 Чтобы заставить это работать, я думаю, что 'filterProcessesUrl' нужно будет увидеть, получен ли он' flash. message', а затем снова установите его, чтобы убедиться, что он распространяется. –

+1

Я пробовал это предложение, но он не обнаружил flash.message. Я использую Grails 2.1.1 –

+1

Я пробовал это с Spring-security-core-2.0-RC2, и он тоже не работает с ним. «Отладка говорит, что DEBUG logout.SimpleUrlLogoutSuccessHandler - использование по умолчанию Url:/login 'и игнорирует значение, установленное для grails.plugin.springsecurity.logout.afterLogoutUrl ='/login/auth '. Журнал отладки показывает, что вход в систему отправляется для входа в систему, а затем вход направляется на login/auth – spock99

0

Вот работа вокруг этой проблемы:

  • Аннулируйте сессии
  • Настройка вспышки сообщение
  • Перенаправление на пустой странице
  • Затем мы запускаем JQuery delay и fadeutAndRemove на быстрое сообщение DIV, который затем перенаправляет на контроллер выхода из системы

Это не идеальный, но он получает сообщение пользователю и принимает их обратно на страницу входа

Смежные вопросы