private SysUserAuthentication getSysUserAuthentication(SysUser sysUser) { if (sysUser == null) { return null; } SysUserAuthentication sysUserAuthentication = new SysUserAuthentication(); BeanUtils.copy(sysUser, sysUserAuthentication); return sysUserAuthentication; }
@Override public SysUserAuthentication authenticate(IntegrationAuthentication integrationAuthentication) { //获取密码,实际值是验证码 String password = integrationAuthentication.getAuthParameter("password"); //获取用户名,实际值是手机号 String username = integrationAuthentication.getUsername(); //发布事件,可以监听事件进行自动注册用户 this.applicationEventPublisher.publishEvent(new SmsAuthenticateBeforeEvent(integrationAuthentication)); //通过手机号码查询用户 SysUserAuthentication sysUserAuthentication = this.sysUserClient.findUserByPhoneNumber(username); if (sysUserAuthentication != null) { //将密码设置为验证码 sysUserAuthentication.setPassword(passwordEncoder.encode(password)); //发布事件,可以监听事件进行消息通知 this.applicationEventPublisher.publishEvent(new SmsAuthenticateSuccessEvent(integrationAuthentication)); } return sysUserAuthentication; }
@Override public SysUserAuthentication authenticate(IntegrationAuthentication integrationAuthentication) { WxMaJscode2SessionResult session = null; String password = integrationAuthentication.getAuthParameter("password"); try { session = this.wxMaService.getUserService().getSessionInfo(password); WechatMiniAppToken wechatToken = new WechatMiniAppToken(session.getOpenid(), session.getUnionid(), session.getSessionKey()); // 加密算法的初始向量 wechatToken.setIv(integrationAuthentication.getAuthParameter("iv")); // 用户的加密数据 wechatToken.setEncryptedData(integrationAuthentication.getAuthParameter("encryptedData")); } catch (WxErrorException e) { throw new InternalAuthenticationServiceException("获取微信小程序用户信息失败",e); } String openId = session.getOpenid(); SysUserAuthentication sysUserAuthentication = sysUserClient.findUserBySocial(UcClientConstant.SOCIAL_TYPE_WECHAT_MINIAP, openId); if(sysUserAuthentication != null){ sysUserAuthentication.setPassword(passwordEncoder.encode(password)); } return sysUserAuthentication; }