2010-03-15 4 views
1

저는 acegi 0.5.2를 사용 중이며 OpenID 지원을 사용하고 있습니다. 제공 업체 (예 : Google, Yahoo!)가 반환 한 URL (또는 사용자 이름)에 액세스하는 방법을 알고 싶습니다. 내가 acegi의 코드를 추적하고 GrailsOpenIdAuthenticationProvider이 발견, 그래서 나는 그것에 대해 어떤 문서를 찾을 수 없습니다 :Grails 컨트롤러/서비스에서 OpenID URL 받기

OpenIDAuthenticationToken response = (OpenIDAuthenticationToken) authentication 
OpenIDAuthenticationStatus status = response.status 

// handle the various possibilites 
if (status == OpenIDAuthenticationStatus.SUCCESS) { 
// Lookup user details 
UserDetails userDetails = _userDetailsService.loadUserByUsername(response.identityUrl) 
return new GrailsOpenIdAuthenticationToken(userDetails, response.status, response.identityUrl) 
} 

는 response.identityUrl 내가 필요한 것을 포함 보인다. 컨트롤러 (또는 서비스) 공간에서 어떻게 얻을 수 있습니까?

감사합니다.

답변

1

몇 가지 시행 착오를 거쳐 매우 오랜 연구 끝에이 솔루션을 발견했습니다.

acegi 플러그인은 프로젝트의 LoginController를 제공하며,이 작업은 authfail입니다. 당신은 자동으로 새로운 사용자 레코드를 만들 수 있습니다, 그와

println "openid = ${session['SPRING_SECURITY_LAST_EXCEPTION'].extraInformation}" 

또는 제공 업체에 의해 주어진 오픈 ID와 당신이 원하는 무엇이든 할 : 구현 내에서,이 코드를 통해 오픈 ID 값을 확인할 수 있습니다.