AjaxResult ajax = AjaxResult.success(); // 生成令牌 log.info("ecryptPassword:" + loginBody.getPassword()); String password = DESUtils.decrypt(loginBody.getPassword(), desKey, "DES/ECB/PKCS7Padding"); log.info("decryptPassword:" + password); // TODO 取出第一个用户进行登录,---已修改 SysUser sysUser = sysUserMapper.selectUserByUserName(loginBody.getUsername()); if(Objects.isNull(sysUser)){ throw new ServiceException("账号不存在"); } Boolean flag; if (InitData.accountList.contains(loginBody.getUsername())) { flag = true; } else { if(!StrUtil.equals(sysUser.getPhonenumber(),loginBody.getPhone())){ throw new ServiceException("手机号码与账号不匹配"); } flag = smsRecordService.verifyMsg(loginBody.getPhone(), loginBody.getSmsCode()).toString().equals(SmsConstants.AUTH_CODE_SUCCESS); } if (flag) { String token = loginService.login(loginBody.getUsername(), password, loginBody.getCode(), loginBody.getUuid(), true); ajax.put(Constants.TOKEN, token); return ajax; } else { throw new ServiceException(smsRecordService.verifyMsg(loginBody.getPhone(), loginBody.getSmsCode()).toString()); }
时间: 2024-04-26 12:21:10 浏览: 176
这段代码是一个 Java 后端程序,主要实现用户登录的逻辑。程序首先通过传入的用户名从数据库中查询用户信息,如果用户不存在,则抛出 ServiceException 异常提示“账号不存在”;如果用户存在,则进行短信验证码验证。如果该用户是系统初始化的账号,直接通过验证;否则需要验证传入的手机号码和短信验证码是否匹配。如果验证通过,则调用 loginService.login 方法进行登录并生成一个令牌 token 返回给客户端;否则抛出 ServiceException 异常提示“短信验证码不正确”。该程序还使用了 DESUtils 工具类对传入的密码进行了解密处理。
阅读全文