Как получить доступ к URL, который Acegi сохранил после формы входа в Grails - PullRequest
0 голосов
/ 15 июля 2010

Я интегрирую Gigya с веб-приложением под управлением Acegi.

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

Используя следующий код в моем контроллере, я могу сказать Acegi, что пользователь аутентифицировался.

def user = com.playhardsports.football.web.admin.auth.User.find("from User where username=?", [UID])
def authorities = [new GrantedAuthorityImpl('ROLE_USER')] as GrantedAuthority[]
def userDetails = new org.codehaus.groovy.grails.plugins.springsecurity.GrailsUserImpl(UID, fakePassword, true, true, true, true, authorities, user)
def authentication = new UsernamePasswordAuthenticationToken(userDetails, fakePassword, authorities)
SecurityContextHolder.context.authentication = authentication

Проблема IУ меня сейчас есть то, что я не знаю, куда перенаправить пользователя после аутентификации.

Распространенный сценарий состоит в том, что пользователь заходит на защищенную страницу, и Acegi перенаправляет их в форму входа.В моей форме входа в систему у меня также есть элементы управления Gigya для проверки пользователя.Конечно, тем временем нормальный поток Acegi будет после входа в систему перенаправлять обратно на исходную защищенную страницу.

Поэтому я ищу, как получить доступ к этому URL, и если не было URL, потому что человекпошел прямо к входу в систему, а затем, как найти URL по умолчанию, который настроил Acegi.

Спасибо.

1 Ответ

5 голосов
/ 16 июля 2010

Вы можете получить доступ к SavedRequest из сеанса:

import org.springframework.security.ui.savedrequest.SavedRequest
import org.springframework.security.ui.AbstractProcessingFilter as APF

def savedRequest = session[APF.SPRING_SECURITY_SAVED_REQUEST_KEY]
String originalUrl = savedRequest?.fullRequestUrl ?: '/'
...