0

我正在将 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

我现在遇到的问题是我不知道在身份验证后将用户重定向到哪里。

一个常见的场景是用户访问一个受保护的页面,Acegi 将他们重定向到登录表单。在我的登录表单上,我还拥有 Gigya 验证用户的控件。当然,与此同时,正常的 Acegi 流程将在登录后重定向回原始受保护页面。

所以我正在寻找如何访问该url,如果没有url,因为该人直接登录,那么如何找到Acegi配置的默认url。

谢谢。

4

1 回答 1

5

您可以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 ?: '/'
于 2010-07-15T20:58:34.443 回答