Class AbstractSocialAuthenticationHandler

java.lang.Object
cn.herodotus.engine.logic.upms.definition.AbstractSocialAuthenticationHandler
All Implemented Interfaces:
SocialAuthenticationHandler
Direct Known Subclasses:
DefaultSocialAuthenticationHandler

public abstract class AbstractSocialAuthenticationHandler extends Object implements SocialAuthenticationHandler

Description: 抽象的社交登录处理器

实现社交登录和手机号码登录的主要流程逻辑

Author:
: gengwei.zheng
Date:
: 2021/5/16 17:38
  • Constructor Details

    • AbstractSocialAuthenticationHandler

      public AbstractSocialAuthenticationHandler()
  • Method Details

    • identity

      public abstract SocialUserDetails identity(String source, cn.herodotus.engine.core.identity.domain.AccessPrincipal accessPrincipal) throws AccessIdentityVerificationFailedException
      第三方登录以及手机号码验证的认证,认证成功返回对应系统中的返回信息
      Parameters:
      source - 社交登录提供者分类
      accessPrincipal - 社交登录所需要的参数信息
      Returns:
      认证成功后返回的信息 SocialUserDetails
      Throws:
      AccessIdentityVerificationFailedException - 社交登录认证出错
    • isUserExist

      public abstract SocialUserDetails isUserExist(SocialUserDetails socialUserDetails)
      根据社交登录返回的用户信息,查询系统中是否有响应的信息
      Parameters:
      socialUserDetails - 第三方系统或者手机号码认证成功后返回的信息 SocialUserDetails
      Returns:
      系统UserDetails SocialUserDetails
    • register

      public abstract cn.herodotus.engine.core.identity.domain.HerodotusUser register(SocialUserDetails socialUserDetails) throws UsernameAlreadyExistsException
      系统用户注册

      根据社交用户提供的一些信息,进行系统用户的注册

      Parameters:
      socialUserDetails - SocialUserDetails
      Returns:
      系统用户 HerodotusUser
      Throws:
      UsernameAlreadyExistsException - 用户名已经存在
    • binding

      public abstract void binding(String userId, SocialUserDetails socialUserDetails) throws SocialCredentialsUserBindingFailedException
      系统用户与社交用户绑定操作
      Parameters:
      socialUserDetails - 第三方系统或者手机号码认证成功后返回的信息 SocialUserDetails
      userId - 系统用户的ID。
      Throws:
      SocialCredentialsUserBindingFailedException - 绑定出现错误Exception
    • additionalRegisterOperation

      public abstract void additionalRegisterOperation(cn.herodotus.engine.core.identity.domain.HerodotusUser HerodotusUser, SocialUserDetails socialUserDetails)
      随着系统业务复杂度的增加,系统用户注册成功之后,也许还会进行其它额外的操作,来补充新用户的相关信息。 所以提供一个方法,方便进行新用户其它业务信息的操作。建议采用是异步操作。
      Parameters:
      HerodotusUser - 系统用户信息 HerodotusUser
      socialUserDetails - 社交登录过程中,第三方系统返回的新信息
    • signIn

      public abstract cn.herodotus.engine.core.identity.domain.HerodotusUser signIn(SocialUserDetails socialUserDetails)
      系统用户注册

      根据社交用户提供的一些信息,进行系统用户的注册

      Parameters:
      socialUserDetails - SocialUserDetails
      Returns:
      系统用户 HerodotusUser
    • additionalSignInOperation

      public abstract void additionalSignInOperation(cn.herodotus.engine.core.identity.domain.HerodotusUser HerodotusUser, SocialUserDetails newSocialUserDetails, SocialUserDetails oldSocialUserDetails)
      社交用户登录后,附加的其它操作
      Parameters:
      HerodotusUser - 系统用户信息 HerodotusUser
      newSocialUserDetails - 社交登录过程中,第三方系统返回的新信息 SocialUserDetails
      oldSocialUserDetails - 系统中已经存在的社交用户信息
    • authentication

      public cn.herodotus.engine.core.identity.domain.HerodotusUser authentication(String source, cn.herodotus.engine.core.identity.domain.AccessPrincipal accessPrincipal) throws org.springframework.security.core.AuthenticationException
      社交登录

      1. 首先在第三方系统进行认证,或者手机号码、扫码认证。返回认证后的信息 2. 根据认证返回的信息,在系统中查询是否有对应的用户信息。 2.1. 如果有对应的信息,根据需要更新社交用户的信息,然后返回系统用户信息,进行登录。 2.2. 如果没有对应信息,就先进行用户的注册,然后进行社交用户和系统用户的绑定。

      Specified by:
      authentication in interface SocialAuthenticationHandler
      Parameters:
      source - 社交登录提供者分类
      accessPrincipal - 社交登录所需要的信息
      Returns:
      系统用户
      Throws:
      org.springframework.security.core.AuthenticationException - AuthenticationException 认证错误