2014-09-17 1 views
2

Я использую защиту весны Grails и хочу перенаправить пользователя на какой-то URL сразу после выхода из системы. То, что я обнаружил до сих пор, заключается в том, что существует специальное свойство для объекта с именем 'logout.afterLogoutUrl' и что для параметра grails.plugin.springsecurity.logout.postOnly должно быть установлено значение false. Так что в моем Config.groovy у меня есть:grails spring security redirect после выхода из системы

grails.plugin.springsecurity.logout.postOnly = false 
logout.afterLogoutUrl = "/" 

моя кнопка выхода из системы выглядит следующим образом:

<sec:ifLoggedIn> 
     <g:remoteLink class="logout buttons" controller="logout"><g:message code="btn.logout" 
                   default="Loading&hellip;"/></g:remoteLink> 
    </sec:ifLoggedIn> 

При нажатии на кнопку выхода из системы следующую последовательность запросов появляется:

  1. /выход из системы/индекс
  2. /j_spring_security_logout
  3. /
  4. /Войти/authAjax

и от последнего я получаю «Код состояния: 401 Несанкционированное», но пользователь все еще видит страницу, откуда я нажал кнопку выхода из системы. Кто-нибудь знает, как справиться с этой ситуацией? Большое спасибо!

ответ

5

я заметил, что я использую неправильное имя свойства для выхода из системы URL. Я изменил свое название на grails.plugin.springsecurity.logout.afterLogoutUrl

2

Возможно, это связано с тем, что ваше действие защищено. Пожалуйста, сделайте это доступным для анонимного пользователя. Чтобы сделать это, поместите IS_AUTHENTICATED_ANONYMOUSLY аннотацию, как: -

@Secured(['IS_AUTHENTICATED_ANONYMOUSLY']) 
def yourActionName(){ 
    ... 
}