【问题标题】:Getting the OpenID URL from a Grails Controller/Service从 Grails 控制器/服务获取 OpenID URL
【发布时间】:2011-01-27 15:07:54
【问题描述】:

我正在使用 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 包含我需要的内容。如何从控制器(或服务)空间获取它?

谢谢。

【问题讨论】:

    标签: java spring grails spring-security


    【解决方案1】:

    经过很长时间的研究和反复试验,我找到了解决方案。

    acegi 插件为你的项目提供了一个 LoginController 并且它有这个动作:authfail。在其实现中,您可以通过以下代码检查 OpenID 值:

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

    这样,您就可以自动创建新的用户记录或使用提供商提供的 OpenID 做任何您想做的事情。

    【讨论】:

      猜你喜欢
      • 2013-12-09
      • 1970-01-01
      • 1970-01-01
      • 2011-02-18
      • 1970-01-01
      • 2012-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多