URL-адрес подключаемого модуля Grails Spring Security

В документации подключаемого модуля Grails Spring Security показаны эти два свойства, связанные с URL-адресами выхода из системы (скопировано из https://github.com/grails-plugins/grails-spring-security-core/blob/master/src/docs/guide/13%20URL%20Properties.gdoc)

logout.afterLogoutUrl | '/' | URL for redirect after logout.

logout.filterProcessesUrl | '/j_spring_security_logout' | Logout URL, intercepted by Spring Security filter.

Когда я запускаю сценарий s2-quickstart для создания LogoutController, поведение по умолчанию — перенаправление на logout.filterProcessesUrl.

Какова цель logout.afterLogoutUrl, если LogoutController не перенаправляет на него?


person Jeff Storey    schedule 23.12.2012    source источник


Ответы (1)


Spring Security вводит некоторые фильтры, фильтры Java, а не Grails. Эти фильтры выполняют всю работу по аутентификации, см. http://static.springsource.org/spring-security/site/docs/3.1.x/reference/security-filter-chain.html

logout.filterProcessesUrl обрабатывается фильтром Spring Security, и после очистки (удаляет пользователя из текущего контекста и т. д.) он перенаправляется на logout.afterLogoutUrl.

LogoutController ничего не делает, просто перенаправляет на фильтр. Вы можете перенаправить пользователя к этому пользователю в своем собственном контроллере или даже поставить ссылку <a на такой URL-адрес.

person Igor Artamonov    schedule 23.12.2012
comment
Поэтому мне нужно создать контроллер, на который указывает /j_spring_security_logout, который выполняет очистку, а затем в конце этого контроллера я должен перенаправить на logout.afterUrl? Или это происходит автоматически (я не видел в UrlMappings.groovy ничего, что могло бы заставить это происходить автоматически)? - person Jeff Storey; 23.12.2012
comment
Это происходит автоматически, есть стандартный фильтр java (не фильтр Grails), который обрабатывает logout.filterProcessesUrl url - person Igor Artamonov; 23.12.2012
comment
Хорошо спасибо. 2 дополнительных вопроса, если не возражаете. 1. Будет ли когда-нибудь причина настраивать /j_spring_security_logout? Я подумал, что должна быть причина, по которой это настраиваемое значение. 2. Вносит ли плагин какие-либо изменения во время компиляции в мои файлы конфигурации? Я пытался выяснить, где были добавлены фильтры, но я не уверен, где. - person Jeff Storey; 23.12.2012
comment
1) Да, вы можете изменить /j_spring_security_logout на что угодно. 2) Фильтры добавляются на github.com/ Grails-plugins/grails-spring-security-core/blob/ - person Igor Artamonov; 23.12.2012
comment
спасибо, я думаю, мне следует спросить, почему вы хотите настроить j_spring_security_logout или logout.filterProcessUrl. - person Jeff Storey; 23.12.2012
comment
Думаю, это дело вкуса :) Например, я меняю его на /auth/logout, просто потому, что все мои URL-адреса для аутентификации начинаются с /auth - person Igor Artamonov; 23.12.2012
comment
Мне было бы любопытно узнать, как вы изменили URL. Если я попытаюсь изменить его, мой выход из системы больше не работает. Вы написали пользовательскую страницу /auth/logout? Или вы все еще могли использовать существующий j_spring_security_logout? - person Jeff Storey; 23.12.2012
comment
Просто измените logout.filterProcessesUrl на /auth/logout. Что происходит, когда вы открываете /auth/logout, он перенаправляет на / или 404? - person Igor Artamonov; 23.12.2012
comment
Вы правы. Должно быть, я сделал что-то не так, когда пытался раньше. Спасибо. - person Jeff Storey; 23.12.2012