gpt4 book ai didi

angular - 使用 Spring Boot 和 Angular 2 CLI 进行 Google OAuth2 身份验证

转载 作者:行者123 更新时间:2023-12-02 18:36:38 25 4
gpt4 key购买 nike

我需要将社交登录集成到我的网络应用程序中。我使用 Spring Boot 作为后端,使用 Angular 2 作为前端技术。我关注了this设置我的项目的教程。

这工作得很好,Spring Boot 运行在 http://localhost:8080 上,Angular 2 运行在 http:/localhost:4200 上。原因是我使用 Angular-cli 来实现实时重新加载开发服务器功能。

由于跨源策略, Angular 项目需要使用代理。正如上一篇教程中提到的,您需要配置一个 proxy.conf.json 文件:

{
"/api": {
"target": "http://localhost:8080",
"secure": false
}
}

如果执行此操作,您可以按如下方式访问 Spring API:例如 http:/localhost:4200/api/users(每个“/api”请求都将转发到 Spring 服务器)。

以上所有内容都运行良好。现在我需要使用 Oauth2 和 google 登录。我尝试了很多教程,例如 this一个,但我似乎无法解决这个问题。

如果我尝试实现此操作并导航到 http:/localhost:8080 (来自 Spring Boot 地址),我会被重定向到 google 登录页面,但是当尝试相同的操作时,例如 http:/localhost:4200/api/authenticate 我总是立即重定向到 http:/localhost:4200/login 而不将我重定向到登录页面。

我在网上到处查看,但似乎找不到这个特定的问题。任何人都可以帮助我理解或我做错了什么,也许有人有示例代码,那就太好了!

最佳答案

我找到了解决问题的方法。首先,我有一个带有“href=/api/authenticate”的登录链接,但这不起作用!

注意:@EnableOAuth2Sso 标准保护服务器上的每个路径,因此您只需访问 protected 路径上的 API 即可重定向到登录页面

由于某种原因,http:/4200/api/authenticate什么也没做,只是立即将我重定向到http:/4200/login(我想如果身份验证失败或未通过身份验证,这一定是@EnableOAuth2Sso的标准行为?)

所以我将 href 更改为“href=http:/localhost:8080/api/authenticate”。这非常有效,并将我重定向到谷歌登录页面。

我遇到的另一个问题是重定向网址。我尝试将重定向网址直接设置为“http:/localhost:4200/profile”,以便在登录用户配置文件后进行导航,但由于某些奇怪的原因,这又不起作用。

经过一些测试,我发现你需要首先重定向回你的 api 域(不知道为什么)。

因此,我将重定向网址设置为 http:/localhost:8080/callback,然后重定向到端口 4200 上的个人资料页面。

@GetMapping("/callback")
void redirect(HttpServletResponse response) throws IOException {
response.sendRedirect("http://localhost:4200/profile");
}

经过长时间的搜索和测试,我觉得这在任何地方都没有记录。

关于angular - 使用 Spring Boot 和 Angular 2 CLI 进行 Google OAuth2 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43514324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com