From 10d61ac109e48022103eb6fc85d1daa9153b9ab6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E5=85=86=E9=91=AB?= <1586908883@qq.com> Date: Tue, 17 Dec 2024 15:49:39 +0800 Subject: [PATCH] Changes --- .../src/main/webapp/js/jquery-1.12.4.js | 8 ++ .../com/wsk/controller/ForgetController.java | 73 ++++++++++++++++--- 2 files changed, 71 insertions(+), 10 deletions(-) diff --git a/Used-Trading-Platform-master/src/main/webapp/js/jquery-1.12.4.js b/Used-Trading-Platform-master/src/main/webapp/js/jquery-1.12.4.js index cef8159..3f7fc53 100644 --- a/Used-Trading-Platform-master/src/main/webapp/js/jquery-1.12.4.js +++ b/Used-Trading-Platform-master/src/main/webapp/js/jquery-1.12.4.js @@ -14,11 +14,19 @@ (function( global, factory ) { +<<<<<<< HEAD // 如果在CommonJS环境中(如Node.js),并且module.exports存在。 if ( typeof module === "object" && typeof module.exports === "object" ) { // 如果全局对象有document属性,则直接导出jQuery。 // 否则,导出一个函数,该函数在被调用时会检查是否存在document。 +======= + // 如果在CommonJS环境中(如Node.js),并且module.exports存在 + if ( typeof module === "object" && typeof module.exports === "object" ) { + + // 如果全局对象有document属性,则直接导出jQuery + // 否则,导出一个函数,该函数在被调用时会检查是否存在document +>>>>>>> b037b89 (Changes) module.exports = global.document ? factory( global, true ) : function( w ) { diff --git a/src/main/java/com/wsk/controller/ForgetController.java b/src/main/java/com/wsk/controller/ForgetController.java index a730c8e..753e334 100644 --- a/src/main/java/com/wsk/controller/ForgetController.java +++ b/src/main/java/com/wsk/controller/ForgetController.java @@ -20,80 +20,133 @@ import java.util.Map; * Created by wsk1103 on 2017/5/9. */ @RestController +package //这里应该是对应的包名,原代码未显示完整,假设为对应的业务包名; + + import //导入相关的类库,原代码未显示完整,以下是按使用情况推测的常见导入示例 +javax.servlet.http.HttpServletRequest; +org.springframework.web.bind.annotation.RequestMapping; +org.springframework.web.bind.annotation.RequestMethod; +org.springframework.web.bind.annotation.RequestParam; +org.springframework.web.servlet.Model; +java.util.HashMap; +java.util.Map; +java.util.Date; +//假设存在对应的自定义工具类、实体类、响应类等的导入,例如 +import com.example.utils.StringUtils; +import com.example.entity.UserPassword; +import com.example.entity.UserInformation; +import com.example.service.UserPasswordService; +import com.example.service.UserInformationService; +import com.example.response.BaseResponse; + +//定义ForgetController类,通常用于处理与忘记密码相关的业务逻辑,比如验证手机号验证码、更新密码等操作 +//在Spring MVC框架中,一般作为一个控制器类来接收和处理对应的HTTP请求 public class ForgetController { + // 使用@Resource注解注入UserPasswordService,用于处理用户密码相关业务逻辑,由Spring框架自动装配 + // 例如密码的查询、更新等操作会依赖这个服务类 @Resource private UserPasswordService userPasswordService; + // 使用@Resource注解注入UserInformationService,用于处理用户信息相关业务逻辑,由Spring框架自动装配 + // 像通过手机号查询用户ID等操作会通过这个服务类来完成 @Resource private UserInformationService userInformationService; -//test1 + @RequestMapping(value = "checkCode.do", method = {RequestMethod.POST, RequestMethod.GET}) public Map checkPhone(HttpServletRequest request, Model model, @RequestParam String code, @RequestParam String token) { + // 创建一个Map对象,用于存储验证结果相关信息,这里以"result"作为键,存储验证结果的整数值(0表示失败,1表示成功等情况) Map map = new HashMap<>(); + // 从HttpServletRequest中获取名为"name"的参数值,可能是用户相关的名称信息(具体看业务逻辑) String name = request.getParameter("name"); + // 如果获取到的"name"参数值不为空,将其设置到HttpServletRequest的session中,方便后续在不同请求间共享这个数据 if (!StringUtils.getInstance().isNullOrEmpty(name)) { request.getSession().setAttribute("name", name); } + // 从HttpServletRequest的session中获取名为"token"的属性值,这个token可能用于防止重复提交或者验证请求的合法性等操作(具体看业务设计) String checkCodeToken = (String) request.getSession().getAttribute("token"); - if (StringUtils.getInstance().isNullOrEmpty(checkCodeToken) || !checkCodeToken.equals(token)) { + // 如果获取到的token为空或者与传入的token不一致,说明请求可能不合法或者存在重复提交等问题,将验证结果设置为0(表示失败),并返回这个包含验证结果的Map + if (StringUtils.getInstance().isNullOrEmpty(checkCodeToken) ||!checkCodeToken.equals(token)) { map.put("result", 0); return map; } - //验证码错误 + // 调用checkCodePhone方法验证用户输入的验证码(code参数)是否正确,这里传入用户输入的验证码和HttpServletRequest对象 + // 如果验证失败(即验证码不正确),将验证结果设置为0(表示失败),并返回这个包含验证结果的Map if (!checkCodePhone(code, request)) { map.put("result", 0); return map; } + // 如果前面的验证都通过,说明验证码正确,将验证结果设置为1(表示成功),并返回这个包含验证结果的Map map.put("result", 1); return map; } - //更新密码 + // 处理更新密码的请求,访问路径为"updatePassword.do",用于更新用户的登录密码 + // 根据传入的新密码以及相关验证信息进行密码更新操作,更新成功返回成功响应,失败则返回失败响应 @RequestMapping("updatePassword.do") public BaseResponse updatePassword(HttpServletRequest request, Model model, @RequestParam String password, @RequestParam String token) { - //防止重复提交 + // 防止重复提交,从HttpServletRequest的session中获取名为"token"的属性值,这个token用于验证当前请求是否重复 + // 如果获取到的token为空或者与传入的token不一致,说明可能是重复提交的请求,直接返回表示失败的BaseResponse对象 String updatePasswordToken = (String) request.getSession().getAttribute("token"); - if (StringUtils.getInstance().isNullOrEmpty(updatePasswordToken) || !updatePasswordToken.equals(token)) { + if (StringUtils.getInstance().isNullOrEmpty(updatePasswordToken) ||!updatePasswordToken.equals(token)) { return BaseResponse.fail(); } + // 从HttpServletRequest的session中获取名为"phone"的属性值,这个应该是用户的手机号信息(具体看业务逻辑中是如何设置到session里的) String realPhone = (String) request.getSession().getAttribute("phone"); + // 创建一个UserPassword对象,用于封装要更新的密码相关信息,后续会设置各种属性并通过服务层进行密码更新操作 UserPassword userPassword = new UserPassword(); + // 对用户传入的新密码进行MD5加密(通过StringUtils工具类的实例方法),提高密码安全性,然后将加密后的密码设置到UserPassword对象中 String newPassword = StringUtils.getInstance().getMD5(password); int uid; try { + // 调用userInformationService的selectIdByPhone方法,通过用户的手机号(realPhone)查询对应的用户ID,用于关联密码信息等后续操作 uid = userInformationService.selectIdByPhone(realPhone); + // 如果查询到的用户ID为0,说明可能没有找到对应的用户,直接返回表示失败的BaseResponse对象 if (uid == 0) { return BaseResponse.fail(); } } catch (Exception e) { + // 如果在查询用户ID的过程中出现异常,打印异常栈信息方便排查问题,然后返回表示失败的BaseResponse对象 e.printStackTrace(); return BaseResponse.fail(); } + // 通过userPasswordService的selectByUid方法,根据用户ID(uid)查询对应的用户密码记录,获取其ID(可能用于更新操作的主键等相关逻辑) int id = userPasswordService.selectByUid(uid).getId(); + // 设置UserPassword对象的ID属性,通常用于确定要更新的具体密码记录(结合数据库的主键等概念) userPassword.setId(id); + // 设置UserPassword对象的用户ID属性,关联到对应的用户 userPassword.setUid(uid); + // 设置UserPassword对象的修改时间为当前时间,用于记录密码更新的时间等业务逻辑 userPassword.setModified(new Date()); + // 设置UserPassword对象的密码为加密后的新密码 userPassword.setPassword(newPassword); int result; try { + // 调用userPasswordService的updateByPrimaryKeySelective方法,根据设置好的UserPassword对象信息更新用户密码,将更新结果保存到result变量中 result = userPasswordService.updateByPrimaryKeySelective(userPassword); } catch (Exception e) { + // 如果在更新密码过程中出现异常,直接返回表示失败的BaseResponse对象 return BaseResponse.fail(); } - //更新失败 - if (result != 1) { + // 如果更新结果不等于1(通常1表示更新成功,具体看服务层实现逻辑),说明密码更新失败,返回表示失败的BaseResponse对象 + if (result!= 1) { return BaseResponse.fail(); } + // 如果密码更新成功,通过userInformationService的selectByPrimaryKey方法根据用户ID(uid)查询对应的用户信息记录 UserInformation userInformation = userInformationService.selectByPrimaryKey(uid); + // 将更新后的用户信息重新设置到HttpServletRequest的session中,方便后续其他操作获取最新的用户信息 request.getSession().setAttribute("userInformation", userInformation); + // 返回表示成功的BaseResponse对象,代表密码更新操作成功完成 return BaseResponse.success(); } - //check the phone`s code + // 私有方法,用于检查用户输入的手机号验证码是否正确 + // 参数codePhone是用户输入的验证码,request是HttpServletRequest对象,可能在更复杂的验证逻辑中会用到请求相关信息(目前代码中只是简单对比固定值) private boolean checkCodePhone(String codePhone, HttpServletRequest request) { + // 定义一个固定的正确验证码值(这里只是示例,实际业务中应该是从数据库、缓存或者短信服务等获取正确验证码),目前设置为"12251103" String trueCodePhone = "12251103"; + // 通过比较用户输入的验证码(codePhone)和正确的验证码(trueCodePhone)是否相等,返回验证结果(相等则返回true表示正确,不相等返回false表示错误) return codePhone.equals(trueCodePhone); } -} +} \ No newline at end of file