簡體   English   中英

從Grails控制器/服務獲取OpenID URL

[英]Getting the OpenID URL from a Grails Controller/Service

我正在使用acegi 0.5.2並啟用了OpenID支持。 我想知道如何訪問提供商(例如Google,Yahoo!)返回的URL(或用戶名)。 我找不到與此有關的任何文檔,因此我追蹤了acegi的代碼,並在GrailsOpenIdAuthenticationProvider中找到了它:

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包含我需要的東西。 如何從控制器(或服務)空間獲得它?

謝謝。

經過長時間的研究並進行了多次試驗和錯誤,我找到了解決方案。

acegi插件為您的項目提供了一個LoginController,它具有以下操作:authfail。 在其實現內部,您可以通過以下代碼檢查OpenID值:

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

這樣,您就可以自動創建新的用戶記錄,或使用提供商提供的OpenID進行任何所需的操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM