如果店面必须提供使用Facebook或Google的登录名,该如何认证用户?

2020-09-25 02:35发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我们正在使用Hybris 6.2...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我们正在使用Hybris 6.2,必须向用户提供Facebook或Google的登录选项。

由于登录身份验证是由Facebook或Google处理的,我们如何处理身份验证? 由于在Hybris中进行身份验证需要用户名和密码,因此我们如何授权通过这两种方法之一登录的用户?

我们正在生成一个新的客户模型并将其保存,但是我们知道该客户中不会存储凭据,但是需要使用凭据来对Hybris中的用户进行身份验证。

我们如何处理这种情况?

2条回答
风早神人
2020-09-25 03:13 .采纳回答

你好,奥古斯丁,

希望我已经在店面实现了两种登录功能,所以我可以回答您的问题

一旦由google和facebook进行身份验证,它们就会向我们提供客户的名字,姓氏和电子邮件ID。 获取此信息后,您可以将其作为自己的客户群(SocialUser或其他)以客户身份注册为hybris。 但是,我无法给出完整的代码,只是给您一个提示,可能会对您有所帮助。 请看下面的方法来获得想法。

  private void autoLoginForCustomer(最终UserModel hybrisUser,最终HttpServletRequest请求,
              最终HttpServletResponse响应)
      {
          最后的de.hybris.platform.jalo.user.User sessionUser = JaloSession.getCurrentSession()。getUserManager()
                  .getUserByLogin(hybrisUser.getUid());
          final String cusomerRole =" ROLE_" + GoogleaddonWebConstants.Permission.CUSTOMER_USERGROUP.toUpperCase();
 
          JaloSession.getCurrentSession()。setUser(sessionUser);
          userService.setCurrentUser(hybrisUser);
 
          final UsernamePasswordAuthenticationToken authenticationToken =新的UsernamePasswordAuthenticationToken(hybrisUser.getUid(),
                  " auth",Arrays.asList(new SimpleGrantedAuthority(cusomerRole)));
          SecurityContextHolder.getContext()。setAuthentication(authenticationToken);
          getCustomerFacade()。loginSuccess();
          getGuidCookieStrategy()。setCookie(request,response);
 
      }
 
      私人GoogleUser getGoogleUserInfo(GoogleIdToken.Payload payLoad)
      {
          final GoogleUser googleUser =新的GoogleUser();
          最终字符串userId = payLoad.getSubject();
          System.out.println(" User ID:" + userId);
 
         //从有效负载中获取配置文件信息
          最终字符串电子邮件= payLoad.getEmail();
          最终的字符串名称=(String)payLoad.get(" name");
          final String familyName =(String)payLoad.get(" family_name");
          最终字符串namedName =(String)payLoad.get(" given_name");
         //使用或存储个人资料信息
         //...
 
          googleUser.setId(userId);
          googleUser.setFirstName(givenName);
          googleUser.setLastName(familyName);
          googleUser.setEmail(email);
          返回googleUser;
      }
  

一周热门 更多>