如何在Grails中访问登录表单后访问Acegi存储的URL

And*_*rew 0 grails spring-security gigya

我正在将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
Run Code Online (Sandbox Code Playgroud)

我现在遇到的问题是我不知道在身份验证后重定向用户的位置.

常见的情况是用户访问受保护的页面,Acegi将其重定向到登录表单.在我的登录表单上,我还有Gigya的控件来验证用户.当然,同时,正常的Acegi流程将在登录后重定向回原始受保护页面.

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

谢谢.

Bur*_*ith 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 ?: '/'
Run Code Online (Sandbox Code Playgroud)