0

使用stormpath web login,一旦用户通过身份验证,当前登录的用户帐户在后续请求中可用,并且可以通过执行以下操作(例如从Servlet中)检索;

Account account = AccountResolver.INSTANCE.getAccount(request);

request在哪里HttpServletRequest

现在,我需要知道的是,为什么不能为社交登录用户(即使用 google、facebook、linked-in 登录的用户)做同样的事情???

我知道在注册/登录时,可以通过执行以下操作来检索帐户;

String applicationHref = appHref;
String code = request.getParameter("code");

Application application = client.getResource(appHref, Application.class);
ProviderAccountRequest request = Providers.GOOGLE.account()
            .setCode(code)
            .build();

ProviderAccountResult result = application.getAccount(request);
Account account = result.getAccount();

但事后,做Account account = AccountResolver.INSTANCE.getAccount(request);总是回报null

现在这是一个问题,因为code仅在登录时可用,不适用于后续请求,因此无法使用上面的代码段。此外,每次必须获取当前登录的帐户时似乎工作量太大。

我无休止地浏览了 Stormpath 文档,但没有找到任何线索……任何想法都将受到高度赞赏。

谢谢。

4

1 回答 1

0

Servlet 插件尚不支持社交帐户。当您使用表单登录时,Servlet 会意识到这一点,并将检索到的帐户放入 cookie 中以供以后使用。但是,在社交登录的情况下,servlet 插件还不知道社交帐户商店。我刚刚创建了这个问题,您可以订阅它以获得有关此功能的任何进展的通知。

值得一提的是,IDSite实际上确实支持社交帐户商店。在您的 Spring/SpringBoot 应用程序中,您只需执行此操作即可使用它:

stormpath.web.idSite.enabled = true

当您启用它时,您将使用来自 IDSite 的 Login/Registration/Forgot/etc 页面,而不是本地可用的页面。

于 2015-12-11T20:37:22.693 回答