0

Gigya を Acegi を実行する Web アプリと統合しています。

クライアント側の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 に答える