📄 社交短信登录原理
内部资料,请扫码登录
pigcloud
# ① 验证码校验
验证码校验统一在网关上处理,此处比较和验证码下发的 code 是否一致
# ② 根据登录请求构建认证实体
- 接受前端
/auth/oauth/token
请求处理,(注意这里是 spring security oauth2 来接管这个请求)
- 接受前端
- ① 请求URL 和密码登录一样
- ② mobile字段比较特殊为登录方式@标识
- ④ mobile 模式为扩展的支持短信&三方登录的实现模式
重点看下这个 ② 这里也就意味着可以支持 WX@OPENI_CODE 这种形式从而实现了三方登录
# ③ 根据请求参数构建认证实体
# ④ spring security 认证过程实现
public class CustomAppAuthenticationProvider extends AbstractUserDetailsAuthenticationProvider {
@Override
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
...
// 获取 PigxUserDetailsService
PigxUserDetailsService optional = null
// 手机号
String phone = authentication.getName();
UserDetails userDetails = optional.get().loadUserByUsername(phone);
// userDeails 校验
preAuthenticationChecks.check(userDetails);
CustomAppAuthenticationToken token = new CustomAppAuthenticationToken(userDetails);
token.setDetails(authentication.getDetails());
return token;
}
}
# ⑤ UserDetailsService 调用 Feign 查询用户信息
特别注意此处入参为: TYPE@XXX
# ⑥ 匹配用户信息处理器查询
① 截取认证方式,比如 SMS、WX
② 通过方式去匹配对应的实现
这个 loginHandlerMap 是 spring 自己注入的,key: bean 名称 、value: bean 实现类