public class DefaultConnectionServiceImpl extends Object implements ConnectionService
signUp(AuthUser, String, String) 功能:第三方登录自动注册时, 根据 第三方的 authUser 注册为本地账户的用户,
用户名的生成规则由 UmsUserDetailsService.generateUsernames(AuthUser) 定义, 默认规则为:
username 或 username + "_" + providerId 或 username + "_" + providerId + "_" + providerUserId.
如需自定义用户名生成逻辑, 重新实现 UmsUserDetailsService.generateUsernames(AuthUser) 方法即可ConnectionService| 构造器和说明 |
|---|
DefaultConnectionServiceImpl(top.dcenter.ums.security.core.api.service.UmsUserDetailsService userDetailsService,
Auth2Properties auth2Properties,
UsersConnectionRepository usersConnectionRepository,
UsersConnectionTokenRepository usersConnectionTokenRepository,
Auth2StateCoder auth2StateCoder) |
| 限定符和类型 | 方法和说明 |
|---|---|
void |
binding(org.springframework.security.core.userdetails.UserDetails principal,
me.zhyd.oauth.model.AuthUser authUser,
String providerId)
第三方授权登录信息
AuthUser绑定到本地账号UserDetails, 且添加第三方授权登录信息到 user_connection 与 auth_token |
List<ConnectionData> |
findConnectionByProviderIdAndProviderUserId(String providerId,
String providerUserId)
根据 providerId 与 providerUserId 获取 ConnectionData list.
|
org.springframework.util.MultiValueMap<String,ConnectionDto> |
listAllConnections(String userId)
Find all connections the current user has across all providers.
|
org.springframework.security.core.userdetails.UserDetails |
signUp(me.zhyd.oauth.model.AuthUser authUser,
String providerId,
String encodeState)
Sign up a new user of the application from the connection.
|
void |
unbinding(String userId,
String providerId,
String providerUserId)
解除绑定(第三方)
|
void |
updateUserConnectionAndAuthToken(me.zhyd.oauth.model.AuthUser authUser,
ConnectionData data)
根据传入的参数更新第三方授权登录的用户信息, 包括 accessToken 信息,
|
public DefaultConnectionServiceImpl(top.dcenter.ums.security.core.api.service.UmsUserDetailsService userDetailsService,
Auth2Properties auth2Properties,
UsersConnectionRepository usersConnectionRepository,
UsersConnectionTokenRepository usersConnectionTokenRepository,
Auth2StateCoder auth2StateCoder)
@Transactional(rollbackFor=java.lang.Exception.class, propagation=REQUIRES_NEW) @NonNull public org.springframework.security.core.userdetails.UserDetails signUp(@NonNull me.zhyd.oauth.model.AuthUser authUser, @NonNull String providerId, @NonNull String encodeState) throws top.dcenter.ums.security.core.exception.RegisterUserFailureException
ConnectionServiceauthUser.getUsername() 重名, 则使用 authUser.getUsername() + "_" + authUser.getSource() 或
authUser.getUsername() + "_" + authUser.getSource() + "_" + authUser.getUuid() 即
username_{providerId}_{providerUserId}.signUp 在接口中 ConnectionServiceauthUser - the user info from the provider sign-in attemptproviderId - 第三方服务商, 如: qq, githubencodeState - 加密后的 state. https://gitee.com/pcore/just-auth-spring-security-starter/issues/I22JC7top.dcenter.ums.security.core.exception.RegisterUserFailureException - 用户重名或注册失败@Transactional(rollbackFor=java.lang.Exception.class, propagation=REQUIRED) public void updateUserConnectionAndAuthToken(@NonNull me.zhyd.oauth.model.AuthUser authUser, @NonNull ConnectionData data) throws UpdateConnectionException
ConnectionServiceupdateUserConnectionAndAuthToken 在接口中 ConnectionServiceauthUser - AuthUserdata - 第三方授权登录的用户信息UpdateConnectionException - 更新异常@Transactional(rollbackFor=java.lang.Exception.class, propagation=REQUIRED) public void binding(@NonNull org.springframework.security.core.userdetails.UserDetails principal, @NonNull me.zhyd.oauth.model.AuthUser authUser, @NonNull String providerId)
ConnectionServiceAuthUser绑定到本地账号UserDetails, 且添加第三方授权登录信息到 user_connection 与 auth_tokenbinding 在接口中 ConnectionServiceprincipal - 本地用户数据authUser - 第三方用户信息providerId - 第三方服务商 Id@Transactional(rollbackFor=java.lang.Exception.class, propagation=REQUIRED) public void unbinding(@NonNull String userId, @NonNull String providerId, @NonNull String providerUserId)
ConnectionServiceunbinding 在接口中 ConnectionServiceuserId - 用户 IdproviderId - 第三方服务商 IdproviderUserId - 第三方用户 Id@Nullable public List<ConnectionData> findConnectionByProviderIdAndProviderUserId(@NonNull String providerId, @NonNull String providerUserId)
ConnectionServicefindConnectionByProviderIdAndProviderUserId 在接口中 ConnectionServiceproviderId - 第三方服务商, 如: qq, githubproviderUserId - 第三方用户 Id@NonNull public org.springframework.util.MultiValueMap<String,ConnectionDto> listAllConnections(@NonNull String userId)
ConnectionServiceConnectionDatas that exist between the user and that provider.
For example, if the user is connected once to Facebook and twice to Twitter, the returned map would contain two entries with the following structure:
{
"qq" -> Connection("Jack") ,
"github" -> Connection("Tomas"), Connection("Jessica")
}
The returned map is sorted by providerId and entry values are ordered by rank.
Returns an empty map if the user has no connections.listAllConnections 在接口中 ConnectionServiceuserId - the userIdCopyright © 2021. All rights reserved.