【发布时间】:2018-09-11 16:10:57
【问题描述】:
我正在寻找有关 grails 插件的建议:
- Spring Security OAuth2
- Spring Security OAuth2 - Google
我正在开发 Grails 3.1.9 应用程序,我需要添加功能性 google 登录按钮。
-
我已将依赖项添加到我的 build.gradle。
编译'org.grails.plugins:spring-security-core:3.1.1' 编译'org.grails.plugins:spring-security-oauth2:1.1.0' 编译'org.grails.plugins:spring-security-oauth2-google:1.1.0'
在 google 中创建应用程序。
-
创建的凭据:
添加到授权的 JavaScript 来源。
添加到授权的重定向 URI。
在 application.yml 中进行配置。
grails:
plugin:
springsecurity:
oauth2:
providers:
google:
api_key: myKey
api_secret: mySecret
successUri: /oauth2/google/success
failureUri: /oauth2/google/failure
callback: /oauth2/google/callback
active: true
registration:
askToLinkOrCreateAccountUri: /oauth2/ask
roleNames: ['ROLE_USER']
- 使用此命令创建了新的域类。
grails init-oauth2 myPackage User OAuthID
-
将此添加到我的用户域类中。
静态 hasMany = [oAuthIDs: OAuthID]
最后将此添加到我的登录视图中。
<oauth2:connect provider="google" id="google-connect-link">Google</oauth2:connect>
Logged with google?
<oauth2:ifLoggedInWith provider="google">yes</oauth2:ifLoggedInWith>
<oauth2:ifNotLoggedInWith provider="google">no</oauth2:ifNotLoggedInWith>
问题是,当我点击通过 google 登录后,我的页面只是刷新并转到 /login/auth。没有重定向到谷歌身份验证,代码永远不会到达 Oauth2 中的回调函数。
有人知道我做错了什么或缺少什么吗?我将非常感谢任何建议或示例。
【问题讨论】:
-
你能在 google web 检查器中显示你的重定向 url,似乎是因为这个配置:registration: askToLinkOrCreateAccountUri: /oauth2/ask 尝试打开这个 url,但最好在登录前捕获你的重定向页面.因为重定向到登录页面 99% 意味着 Spring Security 拒绝了某些请求
-
我希望这就是你的意思。该链接应该将用户重定向到谷歌服务器,但不起作用。
<a href="/spring-security-o-auth2/authenticate?provider=google" provider="google">Google</a>并且 /oauth2/ask 用于在应用程序从谷歌服务器获得响应后重定向。至少我认为它是有效的。 -
您是否检查过“/spring-security-o-auth2/authenticate”网址是否对世界开放?
标签: spring grails oauth-2.0 google-login