有没有办法使用Stormpath从Servlet请求中获得社交用户签名?

时间:2015-12-11 16:59:29

标签: java google-signin stormpath

使用stormpath Web登录,一旦用户通过身份验证,当前登录的用户帐户就可以在后续请求中使用,并且可以通过执行以下(例如,从Servlet中)来检索; < / p>

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

其中requestHttpServletRequest

现在,我需要知道的是,为什么不可能为社交签名用户做同样的事情(即用google,facebook,link-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文档,发现没有任何线索......任何想法都会受到高度赞赏。

感谢。

1 个答案:

答案 0 :(得分:0)

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

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

stormpath.web.idSite.enabled = true

启用后,您将使用IDSite的登录/注册/忘记/等页面,而不是本地可用的页面。