[英]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.