使用stormpath Web登录,一旦用户通过身份验证,当前登录的用户帐户就可以在后续请求中使用,并且可以通过执行以下(例如,从Servlet中)来检索; < / p>
Account account = AccountResolver.INSTANCE.getAccount(request);
其中request
为HttpServletRequest
现在,我需要知道的是,为什么不可能为社交签名用户做同样的事情(即用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文档,发现没有任何线索......任何想法都会受到高度赞赏。
感谢。
答案 0 :(得分:0)
Servlet插件尚未支持社交帐户。当您使用表单登录时,Servlet会知道这一点,并将检索到的帐户放入cookie中供以后使用。但是,在Social Logins的情况下,servlet插件还不知道社交帐户存储。我刚刚创建了this issues,您可以订阅它以获得有关此功能的任何进展的通知。
值得一提的是IDSite确实支持社交帐户商店。在Spring / SpringBoot应用程序中,您只需要执行此操作即可使用它:
stormpath.web.idSite.enabled = true
启用后,您将使用IDSite的登录/注册/忘记/等页面,而不是本地可用的页面。