gpt4 book ai didi

jsf - Socialauth - 您可以在重定向中使用相同的 session 吗?

转载 作者:行者123 更新时间:2023-12-02 09:40:42 25 4
gpt4 key购买 nike

我正在尝试使用 socialauth使用 google、facebook 等登录(我假设这里是 google)并询问其工作原理。我使用的是没有 Seam 的 JSF 2。基本想法是您:

  • 进行一些 API 调用,表明您想要使用 Google 登录。

  • 进行另一个 API 调用,返回 google 的 URL。

  • 提供一个结果网址,Google 将使用该网址重定向回您的网站。

  • 重定向到 Google 网址。

  • 然后 Google 会立即重定向回您的网站,或者首先询问登录详细信息。

我的困惑在于如何将出站和入站的数据链接在一起。在入门页面(上面链接)中,他们建议:

出站

SocialAuthManager manager = new SocialAuthManager();
String successUrl = "http://my.domain.com/socialauthd/successAction.xhtml";
String url = manager.getAuthenticationUrl(id, successUrl);
// Store in session
session.setAttribute("authManager", manager);

入站

// get the auth provider manager from session
SocialAuthManager manager = (SocialAuthManager)session.getAttribute("authManager");

我遇到的问题是我不知道这是如何工作的,并且在测试中也没有。他们建议在 session 中存储对 SocialAuthManager 实例的引用,但是当从谷歌收到请求时,会创建一个新 session 。它没有 JSESSIONID cookie,因此不是最初向 google 发送请求的 session 的一部分。

为了解决这个问题,我从socialauth api(openid.assoc_handle - 它作为查询参数发送)获得了一个唯一的每个请求ID,将其放入应用程序范围bean中的concurrentHashMap中,并在preRenderView中检索引用完成页面中的监听器(successUrl - 在示例中命名错误,因为无论哪种方式都可以调用它)。

对于文档中未包含的内容来说,这一切似乎很麻烦。我已经尝试使用 @RequestScoped CDI beans,尽管我通常使用 CODI @ViewAccessScoped。使用 CODI,我尝试将 windowId 添加到成功 URL,并将 JSESSIONID cookie 添加到重定向,但这两种方法都不起作用。我认为 bean 范围不相关,但信息越多越好。

我可以深入研究 spring、seam 和 struts 示例,但对于纯粹的 EE 6 开发人员来说,这是很大的开销,并且通过更好地理解这个问题,我可以生成一个简单、有效、仅 JSF 的示例,我将制作这个示例可供 Socialauth 团队在 Google 代码上使用。

我是否遗漏了一些明显的东西,或者这是否必须很复杂?如果是这样,为什么他们记录了一种根本行不通的方法?

编辑:我认为 successUrl 的命名可能比我想象的更合适,因为在使用 Yahoo 进行测试时,我意识到除非提供正确的登录详细信息,否则您不会被重定向回您自己的网站假如。我希望这对所有提供商来说都是一样的。我已在 Socialauth 网站以及我记录的有关此问题的问题中添加了一些关于此解决方案的评论(两者均未收到参与 Socialauth 项目的任何人的任何回复)。

最佳答案

在回调 URL 中包含 jsessionid 路径参数。

String successUrl = "http://my.domain.com/socialauthd/successAction.xhtml"
+ ";jsessionid=" + session.getId();

请注意,这并非特定于 JSF API,而是特定于 Servlet API (第 7.1.3 章,URL 重写)。

关于jsf - Socialauth - 您可以在重定向中使用相同的 session 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12307702/

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